kitcn 0.12.4 → 0.12.6

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.
@@ -2532,6 +2532,13 @@ function emitGeneratedMigrationsPlaceholderFile() {
2532
2532
  export { defineMigration } from 'kitcn/orm';
2533
2533
  `;
2534
2534
  }
2535
+ function writeFileIfChanged(filePath, content) {
2536
+ if (fs.existsSync(filePath)) {
2537
+ if (fs.readFileSync(filePath, "utf8") === content) return false;
2538
+ }
2539
+ fs.writeFileSync(filePath, content);
2540
+ return true;
2541
+ }
2535
2542
  function ensureGeneratedSupportPlaceholders(functionsDir, options) {
2536
2543
  const createdPlaceholderFiles = [];
2537
2544
  const serverOutputFile = getGeneratedServerOutputFile(functionsDir);
@@ -2541,15 +2548,15 @@ function ensureGeneratedSupportPlaceholders(functionsDir, options) {
2541
2548
  fs.mkdirSync(generatedDir, { recursive: true });
2542
2549
  const includeAuth = options?.includeAuth ?? true;
2543
2550
  if (!fs.existsSync(serverOutputFile)) {
2544
- fs.writeFileSync(serverOutputFile, emitGeneratedServerPlaceholderFile());
2551
+ writeFileIfChanged(serverOutputFile, emitGeneratedServerPlaceholderFile());
2545
2552
  createdPlaceholderFiles.push(serverOutputFile);
2546
2553
  }
2547
2554
  if (includeAuth && !fs.existsSync(authOutputFile)) {
2548
- fs.writeFileSync(authOutputFile, emitGeneratedAuthPlaceholderFile());
2555
+ writeFileIfChanged(authOutputFile, emitGeneratedAuthPlaceholderFile());
2549
2556
  createdPlaceholderFiles.push(authOutputFile);
2550
2557
  }
2551
2558
  if (!fs.existsSync(migrationsHelperOutputFile)) {
2552
- fs.writeFileSync(migrationsHelperOutputFile, emitGeneratedMigrationsPlaceholderFile());
2559
+ writeFileIfChanged(migrationsHelperOutputFile, emitGeneratedMigrationsPlaceholderFile());
2553
2560
  createdPlaceholderFiles.push(migrationsHelperOutputFile);
2554
2561
  }
2555
2562
  return createdPlaceholderFiles;
@@ -2576,7 +2583,7 @@ function ensureGeneratedRuntimePlaceholders(functionsDir, moduleNames, runtimeEx
2576
2583
  if (fs.existsSync(runtimeOutputFile)) continue;
2577
2584
  const exportNames = runtimeExportNames.get(moduleName) ?? getModuleRuntimeExportNames(moduleName);
2578
2585
  fs.mkdirSync(path.dirname(runtimeOutputFile), { recursive: true });
2579
- fs.writeFileSync(runtimeOutputFile, emitGeneratedRuntimePlaceholderFile(exportNames));
2586
+ writeFileIfChanged(runtimeOutputFile, emitGeneratedRuntimePlaceholderFile(exportNames));
2580
2587
  createdPlaceholderFiles.push(runtimeOutputFile);
2581
2588
  }
2582
2589
  return createdPlaceholderFiles;
@@ -3340,23 +3347,20 @@ ${optionalTypeExports}
3340
3347
  `;
3341
3348
  const outputDirname = path.dirname(outputFile);
3342
3349
  if (!fs.existsSync(outputDirname)) fs.mkdirSync(outputDirname, { recursive: true });
3343
- fs.writeFileSync(outputFile, output);
3350
+ writeFileIfChanged(outputFile, output);
3344
3351
  } else fs.rmSync(outputFile, { force: true });
3345
3352
  const serverOutput = emitGeneratedServerFile(serverOutputFile, functionsDir, hasOrmSchema, hasMigrationsManifest);
3346
3353
  const generatedOutputDirname = path.dirname(serverOutputFile);
3347
3354
  if (!fs.existsSync(generatedOutputDirname)) fs.mkdirSync(generatedOutputDirname, { recursive: true });
3348
- fs.writeFileSync(serverOutputFile, serverOutput);
3355
+ writeFileIfChanged(serverOutputFile, serverOutput);
3349
3356
  fs.rmSync(ormOutputFile, { force: true });
3350
3357
  fs.rmSync(crpcOutputFile, { force: true });
3351
- const migrationsOutput = emitGeneratedMigrationsFile(migrationsHelperOutputFile, functionsDir, hasRelationsMetadata);
3352
- fs.writeFileSync(migrationsHelperOutputFile, migrationsOutput);
3358
+ writeFileIfChanged(migrationsHelperOutputFile, emitGeneratedMigrationsFile(migrationsHelperOutputFile, functionsDir, hasRelationsMetadata));
3353
3359
  fs.rmSync(legacyGeneratedMigrationsOutputFile, { force: true });
3354
3360
  fs.rmSync(legacyGeneratedMigrationsRuntimeOutputFile, { force: true });
3355
3361
  fs.rmSync(legacyGeneratedMigrationsUnderscoreOutputFile, { force: true });
3356
- if (generateAuth) {
3357
- const authOutput = emitGeneratedAuthFile(authOutputFile, functionsDir, hasOrmSchema, authContract);
3358
- fs.writeFileSync(authOutputFile, authOutput);
3359
- } else fs.rmSync(authOutputFile, { force: true });
3362
+ if (generateAuth) writeFileIfChanged(authOutputFile, emitGeneratedAuthFile(authOutputFile, functionsDir, hasOrmSchema, authContract));
3363
+ else fs.rmSync(authOutputFile, { force: true });
3360
3364
  fs.rmSync(getLegacyGeneratedOutputFile(functionsDir), { force: true });
3361
3365
  const mergedProcedureEntries = dedupeProcedureEntries([
3362
3366
  ...hasOrmSchema ? buildGeneratedOrmRuntimeProcedureEntries("generated/server") : [],
@@ -3379,7 +3383,7 @@ ${optionalTypeExports}
3379
3383
  const runtimeOutputFile = getGeneratedRuntimeOutputFile(functionsDir, moduleName);
3380
3384
  const runtimeOutput = emitGeneratedModuleRuntimeFile(runtimeOutputFile, functionsDir, moduleName, moduleEntries, runtimeExportNames);
3381
3385
  fs.mkdirSync(path.dirname(runtimeOutputFile), { recursive: true });
3382
- fs.writeFileSync(runtimeOutputFile, runtimeOutput);
3386
+ writeFileIfChanged(runtimeOutputFile, runtimeOutput);
3383
3387
  runtimeOutputFiles.push(runtimeOutputFile);
3384
3388
  }
3385
3389
  const runtimeOutputFileSet = new Set(runtimeOutputFiles);
@@ -1,5 +1,5 @@
1
1
  import { A as DataTransformer, F as decodeWire, I as defaultCRPCTransformer, L as encodeWire, M as WireCodec, N as createTaggedTransformer, O as CombinedDataTransformer, P as dateWireCodec, R as getTransformer, a as HttpProcedureCall, c as InferHttpInput, i as HttpErrorCode, j as DataTransformerOptions, k as DATE_CODEC_TAG, l as InferHttpOutput, n as HttpClientError, o as HttpRouteInfo, r as HttpClientFromRouter, s as HttpRouteMap, t as HttpClient, u as isHttpClientError, z as identityTransformer } from "../http-types-DqJubRPJ.js";
2
- import { A as HttpInputArgs, C as ReservedMutationOptions, D as VanillaMutation, E as VanillaAction, F as replaceUrlParam, M as RESERVED_KEYS, N as buildSearchParams, O as HttpClientOptions, P as executeHttpRequest, S as ReservedInfiniteQueryOptions, T as StaticQueryOptsParam, _ as IsPaginated, a as BaseInfiniteQueryOptsParam, b as PaginatedFnMeta, c as ConvexMutationKey, d as ConvexQueryMeta, f as EmptyObject, g as InfiniteQueryInput, h as FnMeta, i as BaseConvexQueryOptions, j as HttpProxyBaseOptions, k as HttpFormValue, l as ConvexQueryHookOptions, m as FUNC_REF_SYMBOL, n as BaseConvexActionOptions, o as ConvexActionKey, p as ExtractPaginatedItem, r as BaseConvexInfiniteQueryOptions, s as ConvexInfiniteQueryMeta, t as AuthType, u as ConvexQueryKey, v as Meta, w as ReservedQueryOptions, x as PaginationOpts, y as MutationVariables } from "../types-HhO_R6pd.js";
2
+ import { A as HttpInputArgs, C as ReservedMutationOptions, D as VanillaMutation, E as VanillaAction, F as replaceUrlParam, M as RESERVED_KEYS, N as buildSearchParams, O as HttpClientOptions, P as executeHttpRequest, S as ReservedInfiniteQueryOptions, T as StaticQueryOptsParam, _ as IsPaginated, a as BaseInfiniteQueryOptsParam, b as PaginatedFnMeta, c as ConvexMutationKey, d as ConvexQueryMeta, f as EmptyObject, g as InfiniteQueryInput, h as FnMeta, i as BaseConvexQueryOptions, j as HttpProxyBaseOptions, k as HttpFormValue, l as ConvexQueryHookOptions, m as FUNC_REF_SYMBOL, n as BaseConvexActionOptions, o as ConvexActionKey, p as ExtractPaginatedItem, r as BaseConvexInfiniteQueryOptions, s as ConvexInfiniteQueryMeta, t as AuthType, u as ConvexQueryKey, v as Meta, w as ReservedQueryOptions, x as PaginationOpts, y as MutationVariables } from "../types-BLvtq_eH.js";
3
3
  import { FunctionArgs, FunctionReference } from "convex/server";
4
4
 
5
5
  //#region src/crpc/auth-error.d.ts
@@ -173,10 +173,18 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>, DataModel e
173
173
  };
174
174
  }, Promise<any>>;
175
175
  deleteMany: convex_server0.RegisteredMutation<"internal", {
176
+ paginationOpts: {
177
+ id?: number;
178
+ endCursor?: string | null;
179
+ maximumRowsRead?: number;
180
+ maximumBytesRead?: number;
181
+ numItems: number;
182
+ cursor: string | null;
183
+ };
176
184
  input: {
177
185
  where?: {
186
+ operator?: "eq" | "ne" | "lt" | "lte" | "gt" | "gte" | "in" | "not_in" | "contains" | "starts_with" | "ends_with" | undefined;
178
187
  connector?: "AND" | "OR" | undefined;
179
- operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "not_in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
180
188
  value: string | number | boolean | string[] | number[] | null;
181
189
  field: string;
182
190
  }[] | undefined;
@@ -185,14 +193,6 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>, DataModel e
185
193
  where?: any[] | undefined;
186
194
  model: string;
187
195
  };
188
- paginationOpts: {
189
- id?: number;
190
- endCursor?: string | null;
191
- maximumRowsRead?: number;
192
- maximumBytesRead?: number;
193
- numItems: number;
194
- cursor: string | null;
195
- };
196
196
  }, Promise<{
197
197
  count: number;
198
198
  ids: any[];
@@ -204,8 +204,8 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>, DataModel e
204
204
  deleteOne: convex_server0.RegisteredMutation<"internal", {
205
205
  input: {
206
206
  where?: {
207
+ operator?: "eq" | "ne" | "lt" | "lte" | "gt" | "gte" | "in" | "not_in" | "contains" | "starts_with" | "ends_with" | undefined;
207
208
  connector?: "AND" | "OR" | undefined;
208
- operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "not_in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
209
209
  value: string | number | boolean | string[] | number[] | null;
210
210
  field: string;
211
211
  }[] | undefined;
@@ -216,20 +216,19 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>, DataModel e
216
216
  };
217
217
  }, Promise<Record<string, unknown> | undefined>>;
218
218
  findMany: convex_server0.RegisteredQuery<"internal", {
219
+ limit?: number | undefined;
219
220
  join?: any;
220
221
  where?: {
222
+ operator?: "eq" | "ne" | "lt" | "lte" | "gt" | "gte" | "in" | "not_in" | "contains" | "starts_with" | "ends_with" | undefined;
221
223
  connector?: "AND" | "OR" | undefined;
222
- operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "not_in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
223
224
  value: string | number | boolean | string[] | number[] | null;
224
225
  field: string;
225
226
  }[] | undefined;
226
- limit?: number | undefined;
227
227
  offset?: number | undefined;
228
228
  sortBy?: {
229
229
  field: string;
230
230
  direction: "asc" | "desc";
231
231
  } | undefined;
232
- model: string;
233
232
  paginationOpts: {
234
233
  id?: number;
235
234
  endCursor?: string | null;
@@ -238,46 +237,47 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>, DataModel e
238
237
  numItems: number;
239
238
  cursor: string | null;
240
239
  };
240
+ model: string;
241
241
  }, Promise<convex_server0.PaginationResult<convex_server0.GenericDocument>>>;
242
242
  findOne: convex_server0.RegisteredQuery<"internal", {
243
243
  join?: any;
244
- select?: string[] | undefined;
245
244
  where?: {
245
+ operator?: "eq" | "ne" | "lt" | "lte" | "gt" | "gte" | "in" | "not_in" | "contains" | "starts_with" | "ends_with" | undefined;
246
246
  connector?: "AND" | "OR" | undefined;
247
- operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "not_in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
248
247
  value: string | number | boolean | string[] | number[] | null;
249
248
  field: string;
250
249
  }[] | undefined;
250
+ select?: string[] | undefined;
251
251
  model: string;
252
252
  }, Promise<convex_server0.GenericDocument | null>>;
253
253
  getLatestJwks: convex_server0.RegisteredAction<"internal", {}, Promise<unknown>>;
254
254
  rotateKeys: convex_server0.RegisteredAction<"internal", {}, Promise<unknown>>;
255
255
  updateMany: convex_server0.RegisteredMutation<"internal", {
256
+ paginationOpts: {
257
+ id?: number;
258
+ endCursor?: string | null;
259
+ maximumRowsRead?: number;
260
+ maximumBytesRead?: number;
261
+ numItems: number;
262
+ cursor: string | null;
263
+ };
256
264
  input: {
257
265
  where?: {
266
+ operator?: "eq" | "ne" | "lt" | "lte" | "gt" | "gte" | "in" | "not_in" | "contains" | "starts_with" | "ends_with" | undefined;
258
267
  connector?: "AND" | "OR" | undefined;
259
- operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "not_in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
260
268
  value: string | number | boolean | string[] | number[] | null;
261
269
  field: string;
262
270
  }[] | undefined;
263
- model: string;
264
271
  update: {
265
272
  [x: string]: unknown;
266
273
  [x: number]: unknown;
267
274
  [x: symbol]: unknown;
268
275
  };
276
+ model: string;
269
277
  } | {
270
278
  where?: any[] | undefined;
271
- model: string;
272
279
  update: any;
273
- };
274
- paginationOpts: {
275
- id?: number;
276
- endCursor?: string | null;
277
- maximumRowsRead?: number;
278
- maximumBytesRead?: number;
279
- numItems: number;
280
- cursor: string | null;
280
+ model: string;
281
281
  };
282
282
  }, Promise<{
283
283
  count: number;
@@ -290,21 +290,21 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>, DataModel e
290
290
  updateOne: convex_server0.RegisteredMutation<"internal", {
291
291
  input: {
292
292
  where?: {
293
+ operator?: "eq" | "ne" | "lt" | "lte" | "gt" | "gte" | "in" | "not_in" | "contains" | "starts_with" | "ends_with" | undefined;
293
294
  connector?: "AND" | "OR" | undefined;
294
- operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "not_in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
295
295
  value: string | number | boolean | string[] | number[] | null;
296
296
  field: string;
297
297
  }[] | undefined;
298
- model: string;
299
298
  update: {
300
299
  [x: string]: unknown;
301
300
  [x: number]: unknown;
302
301
  [x: symbol]: unknown;
303
302
  };
303
+ model: string;
304
304
  } | {
305
305
  where?: any[] | undefined;
306
- model: string;
307
306
  update: any;
307
+ model: string;
308
308
  };
309
309
  }, Promise<any>>;
310
310
  };
@@ -1,4 +1,4 @@
1
- import { $ as GenericOrmCtx$1, $n as unique, $r as endsWith, $t as ManyConfig, A as ConvexDateMode, An as ConvexRankIndexBuilder, Ar as ReturningResult, At as MigrationManifestEntry, B as ConvexBytesBuilderInitial, Bn as rankIndex, Br as OrmSchemaRelations, Bt as defineMigration, C as ConvexNumberBuilderInitial, Ci as ColumnBuilderWithTableName, Cn as RlsRole, Cr as MutationReturning, Ct as MigrationStatusArgs, D as id, Di as IsPrimaryKey, Dn as ConvexAggregateIndexBuilderOn, Dr as PaginatedResult, Dt as MigrationDoc, E as ConvexIdBuilderInitial, Ei as HasDefault, En as ConvexAggregateIndexBuilder, Er as OrderDirection, Et as MigrationDirection, F as custom, Fn as ConvexVectorIndexBuilder, Fr as unsetToken, Ft as MigrationStateMap, G as ConvexBigIntBuilder, Gn as ConvexCheckConfig, Gr as ExpressionVisitor, Gt as OrmReader$1, H as ConvexBooleanBuilder, Hn as uniqueIndex, Hr as TableName, Ht as detectMigrationDrift, I as json, In as ConvexVectorIndexBuilderOn, Ir as Brand, It as MigrationStep, J as CountBackfillChunkArgs, Jn as ConvexUniqueConstraintBuilder, Jr as LogicalExpression, Jt as RlsMode, K as ConvexBigIntBuilderInitial, Kn as ConvexForeignKeyBuilder, Kr as FieldReference, Kt as OrmWriter$1, L as objectOf, Ln as ConvexVectorIndexConfig, Lr as Columns, Lt as MigrationTableName, M as ConvexCustomBuilder, Mn as ConvexSearchIndexBuilder, Mr as UpdateSet, Mt as MigrationPlan, N as ConvexCustomBuilderInitial, Nn as ConvexSearchIndexBuilderOn, Nr as VectorQueryConfig, Nt as MigrationRunStatus, O as ConvexDateBuilder, Oi as IsUnique, On as ConvexIndexBuilder, Or as PredicateWhereIndexConfig, Ot as MigrationDocContext, P as arrayOf, Pn as ConvexSearchIndexConfig, Pr as VectorSearchProvider, Pt as MigrationSet, Q as GenericOrm$1, Qn as foreignKey, Qr as contains, Qt as ExtractTablesWithRelations, R as unionOf, Rn as aggregateIndex, Rr as OrmSchemaExtensionTables, Rt as MigrationWriteMode, S as ConvexNumberBuilder, Si as ColumnBuilderTypeConfig, Sn as rlsPolicy, Sr as MutationResult, St as MigrationRunChunkArgs, T as ConvexIdBuilder, Ti as DrizzleEntity, Tn as rlsRole, Tr as OrderByClause, Tt as MigrationDefinition, U as ConvexBooleanBuilderInitial, Un as vectorIndex, Ur as SystemFields, Ut as DatabaseWithMutations, V as bytes, Vn as searchIndex, Vr as OrmSchemaTriggers, Vt as defineMigrationSet, W as boolean, Wn as ConvexCheckBuilder, Wr as BinaryExpression, Wt as DatabaseWithQuery, X as CountBackfillStatusArgs, Xn as ConvexUniqueConstraintConfig, Xr as and, Xt as extractRelationsConfig, Y as CountBackfillKickoffArgs, Yn as ConvexUniqueConstraintBuilderOn, Yr as UnaryExpression, Yt as EdgeMetadata, Z as CreateOrmOptions, Zn as check, Zr as between, Zt as ExtractTablesFromSchema, _ as ConvexTimestampMode, _i as startsWith, _n as deletion, _r as MutationExecuteConfig, _t as OrmTriggerContext, a as requireSchemaRelations, ai as inArray, an as TablesRelationalConfig, ar as AggregateResult, at as OrmWriterCtx, b as ConvexTextEnumBuilderInitial, bi as ColumnBuilderBaseConfig, bn as RlsPolicyConfig, br as MutationPaginateConfig, bt as MigrationCancelArgs, c as TableConfigResult, ci as isNull, cn as ConvexDeletionBuilder, cr as CountConfig, ct as ScheduledMutationBatchArgs, d as OrmNotFoundError, di as lte, dn as ConvexTableWithColumns, dr as FilterOperators, dt as scheduledDeleteFactory, ei as eq, en as OneConfig, er as ConvexTextBuilder, et as OrmApiResult, f as ConvexVectorBuilder, fi as ne, fn as DiscriminatorBuilderConfig, fr as GetColumnData, ft as SchemaExtension, g as ConvexTimestampBuilderInitial, gi as or, gn as convexTable, gr as InsertValue, gt as OrmTriggerChange, h as ConvexTimestampBuilder, hi as notInArray, hn as TableConfig, hr as InferSelectModel, ht as OrmTableTriggers, i as getSchemaTriggers, ii as ilike, in as TableRelationalConfig, ir as AggregateFieldValue, it as OrmReaderCtx, j as date, jn as ConvexRankIndexBuilderOn, jr as ReturningSelection, jt as MigrationMigrateOne, k as ConvexDateBuilderInitial, ki as NotNull, kn as ConvexIndexBuilderOn, kr as ReturningAll, kt as MigrationDriftIssue, l as getTableColumns, li as like, ln as ConvexDeletionConfig, lr as CountResult, lt as scheduledMutationBatchFactory, m as vector, mi as notBetween, mn as OrmLifecycleOperation, mr as InferModelFromColumns, mt as OrmBeforeResult, n as defineSchema, ni as gt, nn as RelationsBuilderColumnBase, nr as text, nt as OrmClientWithApi$1, o as asc, oi as isFieldReference, on as defineRelations, or as BuildQueryResult, ot as ResolveOrmSchema, p as ConvexVectorBuilderInitial, pi as not, pn as OrmLifecycleChange, pr as InferInsertModel, pt as defineSchemaExtension, q as bigint, qn as ConvexForeignKeyConfig, qr as FilterExpression, qt as RlsContext, r as getSchemaRelations, ri as gte, rn as RelationsBuilderColumnConfig, rr as AggregateConfig, rt as OrmFunctions, s as desc, si as isNotNull, sn as defineRelationsPart, sr as BuildRelationResult, st as createOrm, t as WhereClauseResult, ti as fieldRef, tn as RelationsBuilder, tr as ConvexTextBuilderInitial, tt as OrmClientBase$1, u as getTableConfig, ui as lt, un as ConvexTable, ur as DBQueryConfig, ut as ScheduledDeleteArgs, v as timestamp, vi as AnyColumn, vn as discriminator, vr as MutationExecuteResult, vt as OrmTriggers, w as integer, wi as ColumnDataType, wn as RlsRoleConfig, wr as MutationRunMode, wt as MigrationAppliedState, x as textEnum, xi as ColumnBuilderRuntimeConfig, xn as RlsPolicyToOption, xr as MutationPaginatedResult, xt as MigrationRunArgs, y as ConvexTextEnumBuilder, yi as ColumnBuilder, yn as RlsPolicy, yr as MutationExecutionMode, yt as defineTriggers, z as ConvexBytesBuilder, zn as index, zr as OrmSchemaExtensions, zt as buildMigrationPlan } from "../where-clause-compiler-DdjN63Io.js";
1
+ import { $ as GenericOrmCtx$1, $n as unique, $r as endsWith, $t as ManyConfig, A as ConvexDateMode, An as ConvexRankIndexBuilder, Ar as ReturningResult, At as MigrationManifestEntry, B as ConvexBytesBuilderInitial, Bn as rankIndex, Br as OrmSchemaRelations, Bt as defineMigration, C as ConvexNumberBuilderInitial, Ci as ColumnBuilderWithTableName, Cn as RlsRole, Cr as MutationReturning, Ct as MigrationStatusArgs, D as id, Di as IsPrimaryKey, Dn as ConvexAggregateIndexBuilderOn, Dr as PaginatedResult, Dt as MigrationDoc, E as ConvexIdBuilderInitial, Ei as HasDefault, En as ConvexAggregateIndexBuilder, Er as OrderDirection, Et as MigrationDirection, F as custom, Fn as ConvexVectorIndexBuilder, Fr as unsetToken, Ft as MigrationStateMap, G as ConvexBigIntBuilder, Gn as ConvexCheckConfig, Gr as ExpressionVisitor, Gt as OrmReader$1, H as ConvexBooleanBuilder, Hn as uniqueIndex, Hr as TableName, Ht as detectMigrationDrift, I as json, In as ConvexVectorIndexBuilderOn, Ir as Brand, It as MigrationStep, J as CountBackfillChunkArgs, Jn as ConvexUniqueConstraintBuilder, Jr as LogicalExpression, Jt as RlsMode, K as ConvexBigIntBuilderInitial, Kn as ConvexForeignKeyBuilder, Kr as FieldReference, Kt as OrmWriter$1, L as objectOf, Ln as ConvexVectorIndexConfig, Lr as Columns, Lt as MigrationTableName, M as ConvexCustomBuilder, Mn as ConvexSearchIndexBuilder, Mr as UpdateSet, Mt as MigrationPlan, N as ConvexCustomBuilderInitial, Nn as ConvexSearchIndexBuilderOn, Nr as VectorQueryConfig, Nt as MigrationRunStatus, O as ConvexDateBuilder, Oi as IsUnique, On as ConvexIndexBuilder, Or as PredicateWhereIndexConfig, Ot as MigrationDocContext, P as arrayOf, Pn as ConvexSearchIndexConfig, Pr as VectorSearchProvider, Pt as MigrationSet, Q as GenericOrm$1, Qn as foreignKey, Qr as contains, Qt as ExtractTablesWithRelations, R as unionOf, Rn as aggregateIndex, Rr as OrmSchemaExtensionTables, Rt as MigrationWriteMode, S as ConvexNumberBuilder, Si as ColumnBuilderTypeConfig, Sn as rlsPolicy, Sr as MutationResult, St as MigrationRunChunkArgs, T as ConvexIdBuilder, Ti as DrizzleEntity, Tn as rlsRole, Tr as OrderByClause, Tt as MigrationDefinition, U as ConvexBooleanBuilderInitial, Un as vectorIndex, Ur as SystemFields, Ut as DatabaseWithMutations, V as bytes, Vn as searchIndex, Vr as OrmSchemaTriggers, Vt as defineMigrationSet, W as boolean, Wn as ConvexCheckBuilder, Wr as BinaryExpression, Wt as DatabaseWithQuery, X as CountBackfillStatusArgs, Xn as ConvexUniqueConstraintConfig, Xr as and, Xt as extractRelationsConfig, Y as CountBackfillKickoffArgs, Yn as ConvexUniqueConstraintBuilderOn, Yr as UnaryExpression, Yt as EdgeMetadata, Z as CreateOrmOptions, Zn as check, Zr as between, Zt as ExtractTablesFromSchema, _ as ConvexTimestampMode, _i as startsWith, _n as deletion, _r as MutationExecuteConfig, _t as OrmTriggerContext, a as requireSchemaRelations, ai as inArray, an as TablesRelationalConfig, ar as AggregateResult, at as OrmWriterCtx, b as ConvexTextEnumBuilderInitial, bi as ColumnBuilderBaseConfig, bn as RlsPolicyConfig, br as MutationPaginateConfig, bt as MigrationCancelArgs, c as TableConfigResult, ci as isNull, cn as ConvexDeletionBuilder, cr as CountConfig, ct as ScheduledMutationBatchArgs, d as OrmNotFoundError, di as lte, dn as ConvexTableWithColumns, dr as FilterOperators, dt as scheduledDeleteFactory, ei as eq, en as OneConfig, er as ConvexTextBuilder, et as OrmApiResult, f as ConvexVectorBuilder, fi as ne, fn as DiscriminatorBuilderConfig, fr as GetColumnData, ft as SchemaExtension, g as ConvexTimestampBuilderInitial, gi as or, gn as convexTable, gr as InsertValue, gt as OrmTriggerChange, h as ConvexTimestampBuilder, hi as notInArray, hn as TableConfig, hr as InferSelectModel, ht as OrmTableTriggers, i as getSchemaTriggers, ii as ilike, in as TableRelationalConfig, ir as AggregateFieldValue, it as OrmReaderCtx, j as date, jn as ConvexRankIndexBuilderOn, jr as ReturningSelection, jt as MigrationMigrateOne, k as ConvexDateBuilderInitial, ki as NotNull, kn as ConvexIndexBuilderOn, kr as ReturningAll, kt as MigrationDriftIssue, l as getTableColumns, li as like, ln as ConvexDeletionConfig, lr as CountResult, lt as scheduledMutationBatchFactory, m as vector, mi as notBetween, mn as OrmLifecycleOperation, mr as InferModelFromColumns, mt as OrmBeforeResult, n as defineSchema, ni as gt, nn as RelationsBuilderColumnBase, nr as text, nt as OrmClientWithApi$1, o as asc, oi as isFieldReference, on as defineRelations, or as BuildQueryResult, ot as ResolveOrmSchema, p as ConvexVectorBuilderInitial, pi as not, pn as OrmLifecycleChange, pr as InferInsertModel, pt as defineSchemaExtension, q as bigint, qn as ConvexForeignKeyConfig, qr as FilterExpression, qt as RlsContext, r as getSchemaRelations, ri as gte, rn as RelationsBuilderColumnConfig, rr as AggregateConfig, rt as OrmFunctions, s as desc, si as isNotNull, sn as defineRelationsPart, sr as BuildRelationResult, st as createOrm, t as WhereClauseResult, ti as fieldRef, tn as RelationsBuilder, tr as ConvexTextBuilderInitial, tt as OrmClientBase$1, u as getTableConfig, ui as lt, un as ConvexTable, ur as DBQueryConfig, ut as ScheduledDeleteArgs, v as timestamp, vi as AnyColumn, vn as discriminator, vr as MutationExecuteResult, vt as OrmTriggers, w as integer, wi as ColumnDataType, wn as RlsRoleConfig, wr as MutationRunMode, wt as MigrationAppliedState, x as textEnum, xi as ColumnBuilderRuntimeConfig, xn as RlsPolicyToOption, xr as MutationPaginatedResult, xt as MigrationRunArgs, y as ConvexTextEnumBuilder, yi as ColumnBuilder, yn as RlsPolicy, yr as MutationExecutionMode, yt as defineTriggers, z as ConvexBytesBuilder, zn as index, zr as OrmSchemaExtensions, zt as buildMigrationPlan } from "../where-clause-compiler-CuH2JNxb.js";
2
2
  import { i as pretendRequired, n as deprecated, r as pretend } from "../validators-vzRKjBJC.js";
3
3
  import { a as QueryCtxWithPreferredOrmQueryTable, i as QueryCtxWithOrmQueryTable, n as LookupByIdResultByCtx, o as getByIdWithOrmQueryFallback, r as QueryCtxWithOptionalOrmQueryTable, t as DocByCtx } from "../query-context-CFZqIvD7.js";
4
4
  import { DefineSchemaOptions, GenericDatabaseReader, GenericDatabaseWriter, GenericSchema, SchemaDefinition } from "convex/server";
@@ -1,2 +1,2 @@
1
- import { a as PluginConfigureResolver, i as PluginConfigureInput, n as PluginApiScope, o as definePlugin, r as PluginConfigureContext, s as resolvePluginOptions, t as Plugin } from "../middleware-BUybuv9n.js";
1
+ import { a as PluginConfigureResolver, i as PluginConfigureInput, n as PluginApiScope, o as definePlugin, r as PluginConfigureContext, s as resolvePluginOptions, t as Plugin } from "../middleware-BL2wn3s0.js";
2
2
  export { type Plugin, type PluginApiScope, type PluginConfigureContext, type PluginConfigureInput, type PluginConfigureResolver, definePlugin, resolvePluginOptions };
@@ -1,5 +1,5 @@
1
1
  import { o as MiddlewareBuilder } from "../types-DEJpkIhw.js";
2
- import { t as Plugin } from "../middleware-BUybuv9n.js";
2
+ import { t as Plugin } from "../middleware-BL2wn3s0.js";
3
3
  import * as convex_server0 from "convex/server";
4
4
 
5
5
  //#region src/ratelimit/duration.d.ts
@@ -1,7 +1,7 @@
1
1
  import { n as DeepPartial, o as Simplify, r as DistributiveOmit } from "../types-BTb_4BaU.js";
2
2
  import { C as HttpProcedure, d as CRPCHttpRouter, j as DataTransformerOptions, p as HttpRouterRecord } from "../http-types-DqJubRPJ.js";
3
3
  import { m as UnsetMarker } from "../types-DEJpkIhw.js";
4
- import { A as HttpInputArgs, C as ReservedMutationOptions$1, S as ReservedInfiniteQueryOptions, T as StaticQueryOptsParam, _ as IsPaginated, b as PaginatedFnMeta, c as ConvexMutationKey, d as ConvexQueryMeta, f as EmptyObject, g as InfiniteQueryInput, l as ConvexQueryHookOptions, m as FUNC_REF_SYMBOL, o as ConvexActionKey, p as ExtractPaginatedItem, s as ConvexInfiniteQueryMeta, u as ConvexQueryKey, w as ReservedQueryOptions$1, y as MutationVariables } from "../types-HhO_R6pd.js";
4
+ import { A as HttpInputArgs, C as ReservedMutationOptions$1, S as ReservedInfiniteQueryOptions, T as StaticQueryOptsParam, _ as IsPaginated, b as PaginatedFnMeta, c as ConvexMutationKey, d as ConvexQueryMeta, f as EmptyObject, g as InfiniteQueryInput, l as ConvexQueryHookOptions, m as FUNC_REF_SYMBOL, o as ConvexActionKey, p as ExtractPaginatedItem, s as ConvexInfiniteQueryMeta, u as ConvexQueryKey, w as ReservedQueryOptions$1, y as MutationVariables } from "../types-BLvtq_eH.js";
5
5
  import { FunctionArgs, FunctionReference, FunctionReturnType } from "convex/server";
6
6
  import { z } from "zod";
7
7
  import { DefaultError, QueryFilters, SkipToken, UseMutationOptions, UseQueryOptions } from "@tanstack/react-query";
package/dist/watcher.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { n as getConvexConfig, r as logger, t as generateMeta } from "./codegen-lF80HSWu.mjs";
2
+ import { n as getConvexConfig, r as logger, t as generateMeta } from "./codegen-B60fOYhd.mjs";
3
3
  import path from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
5
 
@@ -3992,11 +3992,7 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
3992
3992
  readonly aggregate_extrema: ConvexTableWithColumns<{
3993
3993
  name: "aggregate_extrema";
3994
3994
  columns: {
3995
- value: ConvexCustomBuilderInitial<"", convex_values0.VAny<any, "required", string>> & {
3996
- _: {
3997
- $type: convex_values0.Value;
3998
- };
3999
- } & {
3995
+ count: ConvexNumberBuilderInitial<""> & {
4000
3996
  _: {
4001
3997
  notNull: true;
4002
3998
  };
@@ -4006,10 +4002,14 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
4006
4002
  };
4007
4003
  } & {
4008
4004
  _: {
4009
- fieldName: "value";
4005
+ fieldName: "count";
4010
4006
  };
4011
4007
  };
4012
- count: ConvexNumberBuilderInitial<""> & {
4008
+ value: ConvexCustomBuilderInitial<"", convex_values0.VAny<any, "required", string>> & {
4009
+ _: {
4010
+ $type: convex_values0.Value;
4011
+ };
4012
+ } & {
4013
4013
  _: {
4014
4014
  notNull: true;
4015
4015
  };
@@ -4019,7 +4019,7 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
4019
4019
  };
4020
4020
  } & {
4021
4021
  _: {
4022
- fieldName: "count";
4022
+ fieldName: "value";
4023
4023
  };
4024
4024
  };
4025
4025
  tableKey: ConvexTextBuilderInitial<""> & {
@@ -4398,22 +4398,22 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
4398
4398
  readonly migration_state: ConvexTableWithColumns<{
4399
4399
  name: "migration_state";
4400
4400
  columns: {
4401
- cursor: ConvexTextBuilderInitial<""> & {
4401
+ direction: ConvexTextBuilderInitial<""> & {
4402
4402
  _: {
4403
4403
  tableName: "migration_state";
4404
4404
  };
4405
4405
  } & {
4406
4406
  _: {
4407
- fieldName: "cursor";
4407
+ fieldName: "direction";
4408
4408
  };
4409
4409
  };
4410
- direction: ConvexTextBuilderInitial<""> & {
4410
+ cursor: ConvexTextBuilderInitial<""> & {
4411
4411
  _: {
4412
4412
  tableName: "migration_state";
4413
4413
  };
4414
4414
  } & {
4415
4415
  _: {
4416
- fieldName: "direction";
4416
+ fieldName: "cursor";
4417
4417
  };
4418
4418
  };
4419
4419
  status: ConvexTextBuilderInitial<""> & {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kitcn",
3
- "version": "0.12.4",
3
+ "version": "0.12.6",
4
4
  "description": "kitcn - React Query integration and CLI tools for Convex",
5
5
  "keywords": [
6
6
  "convex",
@@ -27,6 +27,7 @@
27
27
  "./auth/generated": "./dist/auth/generated/index.js",
28
28
  "./auth/http": "./dist/auth/http/index.js",
29
29
  "./auth/nextjs": "./dist/auth/nextjs/index.js",
30
+ "./auth/start": "./dist/auth/start/index.js",
30
31
  "./crpc": "./dist/crpc/index.js",
31
32
  "./orm": "./dist/orm/index.js",
32
33
  "./plugins": "./dist/plugins/index.js",
@@ -193,7 +193,7 @@ export default createHttpRouter(app, httpRouter);
193
193
  SITE_URL=http://localhost:3000
194
194
  GOOGLE_CLIENT_ID=...
195
195
  GOOGLE_CLIENT_SECRET=...
196
- # Auto-generated during local auth bootstrap and prod env sync
196
+ # Auto-generated during local auth bootstrap and prod env push
197
197
  BETTER_AUTH_SECRET=...
198
198
  JWKS=...
199
199
  ```
@@ -1,31 +1,33 @@
1
1
  ## 8.B TanStack Start
2
2
 
3
- Explicit exception: current docs still use `@convex-dev/better-auth/*` helpers for TanStack Start integration.
4
-
5
3
  ### 8.B.1 Auth client + auth server helpers
6
4
 
7
- **Create:** `src/lib/convex/auth/auth-client.ts`
5
+ **Create:** `src/lib/convex/auth-client.ts`
8
6
 
9
7
  ```ts
10
- import type { Auth } from "@convex/auth-shared";
11
- import { convexClient } from "@convex-dev/better-auth/client/plugins";
12
- import { adminClient, inferAdditionalFields } from "better-auth/client/plugins";
13
8
  import { createAuthClient } from "better-auth/react";
9
+ import { convexClient } from "kitcn/auth/client";
10
+ import { createAuthMutations } from "kitcn/react";
14
11
 
15
12
  export const authClient = createAuthClient({
16
13
  baseURL:
17
14
  typeof window === "undefined"
18
15
  ? (import.meta.env.VITE_SITE_URL as string | undefined)
19
16
  : window.location.origin,
20
- sessionOptions: { refetchOnWindowFocus: false },
21
- plugins: [inferAdditionalFields<Auth>(), adminClient(), convexClient()],
17
+ plugins: [convexClient()],
22
18
  });
19
+
20
+ export const {
21
+ useSignInMutationOptions,
22
+ useSignOutMutationOptions,
23
+ useSignUpMutationOptions,
24
+ } = createAuthMutations(authClient);
23
25
  ```
24
26
 
25
- **Create:** `src/lib/convex/auth/auth-server.ts`
27
+ **Create:** `src/lib/convex/auth-server.ts`
26
28
 
27
29
  ```ts
28
- import { convexBetterAuthReactStart } from "@convex-dev/better-auth/react-start";
30
+ import { convexBetterAuthReactStart } from "kitcn/auth/start";
29
31
 
30
32
  export const {
31
33
  handler,
@@ -34,8 +36,8 @@ export const {
34
36
  fetchAuthMutation,
35
37
  fetchAuthAction,
36
38
  } = convexBetterAuthReactStart({
37
- convexUrl: process.env.VITE_CONVEX_URL!,
38
- convexSiteUrl: process.env.VITE_CONVEX_SITE_URL!,
39
+ convexUrl: import.meta.env.VITE_CONVEX_URL!,
40
+ convexSiteUrl: import.meta.env.VITE_CONVEX_SITE_URL!,
39
41
  });
40
42
  ```
41
43
 
@@ -45,9 +47,9 @@ export const {
45
47
 
46
48
  ```ts
47
49
  import { createFileRoute } from "@tanstack/react-router";
48
- import { handler } from "@/lib/convex/auth/auth-server";
50
+ import { handler } from "@/lib/convex/auth-server";
49
51
 
50
- export const Route = createFileRoute("/api/auth/$")({
52
+ export const Route = createFileRoute("/api/auth/$" as never)({
51
53
  server: {
52
54
  handlers: {
53
55
  GET: ({ request }) => handler(request),
@@ -59,9 +61,47 @@ export const Route = createFileRoute("/api/auth/$")({
59
61
 
60
62
  ### 8.B.3 Caller/context and providers
61
63
 
62
- Use docs pattern from `tanstack-start.mdx` for:
64
+ **Create:** `src/lib/convex/server.ts`
65
+
66
+ ```ts
67
+ import { api } from "@convex/api";
68
+ import { getRequestHeaders } from "@tanstack/react-start/server";
69
+ import { createCallerFactory } from "kitcn/server";
70
+
71
+ import { getToken } from "@/lib/convex/auth-server";
72
+
73
+ const { createContext, createCaller } = createCallerFactory({
74
+ api,
75
+ convexSiteUrl: import.meta.env.VITE_CONVEX_SITE_URL!,
76
+ auth: {
77
+ getToken: async () => {
78
+ return {
79
+ token: await getToken(),
80
+ };
81
+ },
82
+ },
83
+ });
84
+
85
+ type ServerCaller = ReturnType<typeof createCaller>;
86
+
87
+ async function makeContext() {
88
+ const headers = await getRequestHeaders();
89
+ return createContext({ headers });
90
+ }
91
+
92
+ function createServerCaller(): ServerCaller {
93
+ return createCaller(async () => {
94
+ return await makeContext();
95
+ });
96
+ }
97
+
98
+ export function runServerCall<T>(fn: (caller: ServerCaller) => Promise<T> | T) {
99
+ const caller = createServerCaller();
100
+ return fn(caller);
101
+ }
102
+ ```
63
103
 
64
- - `createCallerFactory` + `runServerCall`
65
- - router context values (`convex`, `queryClient`, `convexQueryClient`)
66
- - provider wrapping with `ConvexAuthProvider` and `initialToken`
104
+ Use the docs pattern from `tanstack-start.mdx` for:
67
105
 
106
+ - `src/routes/__root.tsx` shell/provider wiring
107
+ - `src/lib/convex/convex-provider.tsx`