kitcn 0.25.4 → 0.25.5
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/aggregate/index.d.ts +1 -1
- package/dist/auth/generated/index.d.ts +1 -1
- package/dist/auth/index.d.ts +3 -3
- package/dist/cli.mjs +1 -1
- package/dist/{generated-contract-disabled-DwYwySy3.d.ts → generated-contract-disabled-B3ByVG3_.d.ts} +5 -5
- package/dist/{local-env-Dkh4a_BK.mjs → local-env-CiPqNKS_.mjs} +167 -21
- package/dist/orm/index.d.ts +1 -1
- package/dist/orm/index.js +2 -2
- package/dist/orm/migrations/index.d.ts +1 -1
- package/dist/watcher.mjs +1 -1
- package/dist/{where-clause-compiler-CCMtAIdx.d.ts → where-clause-compiler-DlRUDuMx.d.ts} +40 -40
- package/package.json +1 -1
- package/skills/kitcn/references/setup/index.md +1 -0
- package/skills/kitcn/references/setup/server.md +9 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Bn as ConvexTextBuilderInitial, Xt as ConvexTableWithColumns } from "../capabilities-DtDfpdcH.js";
|
|
2
|
-
import { C as ConvexNumberBuilderInitial, E as ConvexIdBuilderInitial, N as ConvexCustomBuilderInitial } from "../where-clause-compiler-
|
|
2
|
+
import { C as ConvexNumberBuilderInitial, E as ConvexIdBuilderInitial, N as ConvexCustomBuilderInitial } from "../where-clause-compiler-DlRUDuMx.js";
|
|
3
3
|
import * as convex_values0 from "convex/values";
|
|
4
4
|
import { GenericId, Infer, Value } from "convex/values";
|
|
5
5
|
import { DocumentByName, GenericDataModel, GenericDatabaseReader, GenericDatabaseWriter, TableNamesInDataModel } from "convex/server";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { S as defineAuth, _ as GenericAuthBeforeResult, b as GenericAuthTriggerHandlers, g as BetterAuthOptionsWithoutDatabase, i as getGeneratedAuthDisabledReason, n as GeneratedAuthDisabledReasonKind, r as createDisabledAuthRuntime, t as AuthRuntime, v as GenericAuthDefinition, x as GenericAuthTriggers, y as GenericAuthTriggerChange } from "../../generated-contract-disabled-
|
|
1
|
+
import { S as defineAuth, _ as GenericAuthBeforeResult, b as GenericAuthTriggerHandlers, g as BetterAuthOptionsWithoutDatabase, i as getGeneratedAuthDisabledReason, n as GeneratedAuthDisabledReasonKind, r as createDisabledAuthRuntime, t as AuthRuntime, v as GenericAuthDefinition, x as GenericAuthTriggers, y as GenericAuthTriggerChange } from "../../generated-contract-disabled-B3ByVG3_.js";
|
|
2
2
|
export { type AuthRuntime, BetterAuthOptionsWithoutDatabase, type GeneratedAuthDisabledReasonKind, GenericAuthBeforeResult, GenericAuthDefinition, GenericAuthTriggerChange, GenericAuthTriggerHandlers, GenericAuthTriggers, createDisabledAuthRuntime, defineAuth, getGeneratedAuthDisabledReason };
|
package/dist/auth/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as QueryCtxWithPreferredOrmQueryTable, n as LookupByIdResultByCtx, t as DocByCtx } from "../query-context-DJONf8X5.js";
|
|
2
2
|
import { t as GetAuth } from "../types-Bf3XQex5.js";
|
|
3
3
|
import { t as GenericCtx } from "../context-utils-DwZ3Cam1.js";
|
|
4
|
-
import { S as defineAuth, _ as GenericAuthBeforeResult, a as AuthFunctions, b as GenericAuthTriggerHandlers, c as createApi, d as deleteOneHandler, f as findManyHandler, g as BetterAuthOptionsWithoutDatabase, h as updateOneHandler, i as getGeneratedAuthDisabledReason, l as createHandler, m as updateManyHandler, n as GeneratedAuthDisabledReasonKind, o as Triggers, p as findOneHandler, r as createDisabledAuthRuntime, s as createClient, t as AuthRuntime, u as deleteManyHandler, v as GenericAuthDefinition, x as GenericAuthTriggers, y as GenericAuthTriggerChange } from "../generated-contract-disabled-
|
|
4
|
+
import { S as defineAuth, _ as GenericAuthBeforeResult, a as AuthFunctions, b as GenericAuthTriggerHandlers, c as createApi, d as deleteOneHandler, f as findManyHandler, g as BetterAuthOptionsWithoutDatabase, h as updateOneHandler, i as getGeneratedAuthDisabledReason, l as createHandler, m as updateManyHandler, n as GeneratedAuthDisabledReasonKind, o as Triggers, p as findOneHandler, r as createDisabledAuthRuntime, s as createClient, t as AuthRuntime, u as deleteManyHandler, v as GenericAuthDefinition, x as GenericAuthTriggers, y as GenericAuthTriggerChange } from "../generated-contract-disabled-B3ByVG3_.js";
|
|
5
5
|
import * as convex_values0 from "convex/values";
|
|
6
6
|
import { Infer } from "convex/values";
|
|
7
7
|
import { AuthConfig, DocumentByName, GenericDataModel, GenericMutationCtx, GenericQueryCtx, GenericSchema, PaginationOptions, PaginationResult, SchemaDefinition, TableNamesInDataModel } from "convex/server";
|
|
@@ -123,7 +123,6 @@ declare const adapterWhereValidator: convex_values0.VObject<{
|
|
|
123
123
|
value: convex_values0.VUnion<string | number | boolean | string[] | number[] | null, [convex_values0.VString<string, "required">, convex_values0.VFloat64<number, "required">, convex_values0.VBoolean<boolean, "required">, convex_values0.VArray<string[], convex_values0.VString<string, "required">, "required">, convex_values0.VArray<number[], convex_values0.VFloat64<number, "required">, "required">, convex_values0.VNull<null, "required">], "required", never>;
|
|
124
124
|
}, "required", "mode" | "value" | "connector" | "field" | "operator">;
|
|
125
125
|
declare const adapterArgsValidator: convex_values0.VObject<{
|
|
126
|
-
limit?: number | undefined;
|
|
127
126
|
select?: string[] | undefined;
|
|
128
127
|
where?: {
|
|
129
128
|
mode?: "sensitive" | "insensitive" | undefined;
|
|
@@ -132,6 +131,7 @@ declare const adapterArgsValidator: convex_values0.VObject<{
|
|
|
132
131
|
value: string | number | boolean | string[] | number[] | null;
|
|
133
132
|
field: string;
|
|
134
133
|
}[] | undefined;
|
|
134
|
+
limit?: number | undefined;
|
|
135
135
|
offset?: number | undefined;
|
|
136
136
|
sortBy?: {
|
|
137
137
|
direction: "asc" | "desc";
|
|
@@ -169,7 +169,7 @@ declare const adapterArgsValidator: convex_values0.VObject<{
|
|
|
169
169
|
operator: convex_values0.VUnion<"lt" | "lte" | "gt" | "gte" | "eq" | "in" | "not_in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined, [convex_values0.VLiteral<"lt", "required">, convex_values0.VLiteral<"lte", "required">, convex_values0.VLiteral<"gt", "required">, convex_values0.VLiteral<"gte", "required">, convex_values0.VLiteral<"eq", "required">, convex_values0.VLiteral<"in", "required">, convex_values0.VLiteral<"not_in", "required">, convex_values0.VLiteral<"ne", "required">, convex_values0.VLiteral<"contains", "required">, convex_values0.VLiteral<"starts_with", "required">, convex_values0.VLiteral<"ends_with", "required">], "optional", never>;
|
|
170
170
|
value: convex_values0.VUnion<string | number | boolean | string[] | number[] | null, [convex_values0.VString<string, "required">, convex_values0.VFloat64<number, "required">, convex_values0.VBoolean<boolean, "required">, convex_values0.VArray<string[], convex_values0.VString<string, "required">, "required">, convex_values0.VArray<number[], convex_values0.VFloat64<number, "required">, "required">, convex_values0.VNull<null, "required">], "required", never>;
|
|
171
171
|
}, "required", "mode" | "value" | "connector" | "field" | "operator">, "optional">;
|
|
172
|
-
}, "required", "
|
|
172
|
+
}, "required", "model" | "select" | "where" | "limit" | "offset" | "sortBy" | "sortBy.direction" | "sortBy.field">;
|
|
173
173
|
declare const hasUniqueFields: (betterAuthSchema: BetterAuthDBSchema, model: string, input: Record<string, any>) => boolean;
|
|
174
174
|
declare const checkUniqueFields: <Schema extends SchemaDefinition<any, any>>(ctx: GenericQueryCtx<GenericDataModel>, schema: Schema, betterAuthSchema: BetterAuthDBSchema, table: string, input: Record<string, any>, doc?: Record<string, any>) => Promise<void>;
|
|
175
175
|
declare const selectFields: <T extends TableNamesInDataModel<GenericDataModel>, D extends DocumentByName<GenericDataModel, T>>(doc: D | null, select?: string[]) => D | null;
|
package/dist/cli.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { C as Columns, D as TableName, E as RlsPolicies, O as createSystemFields, S as getRankIndexes, T as OrmSchemaExtensions, _ as loadEsbuild, a as generateMeta, b as getAggregateIndexes, c as resolveSchemaDefaultExport, f as createProjectJiti, g as loadDotenv, h as loadClackPrompts, i as resolveConfiguredBackend, l as schemaDeclaresAggregateIndexes, m as loadBabelParser, n as withLocalCodegenEnv, o as getConvexConfig, p as CRPC_BUILDER_STUB_SOURCE, r as loadCliConfig, s as collectSchemaTables, t as getLocalBackendEnvVars, u as logger, v as highlighter, w as EnableRLS, x as getIndexes, y as isColorEnabled } from "./local-env-
|
|
2
|
+
import { C as Columns, D as TableName, E as RlsPolicies, O as createSystemFields, S as getRankIndexes, T as OrmSchemaExtensions, _ as loadEsbuild, a as generateMeta, b as getAggregateIndexes, c as resolveSchemaDefaultExport, f as createProjectJiti, g as loadDotenv, h as loadClackPrompts, i as resolveConfiguredBackend, l as schemaDeclaresAggregateIndexes, m as loadBabelParser, n as withLocalCodegenEnv, o as getConvexConfig, p as CRPC_BUILDER_STUB_SOURCE, r as loadCliConfig, s as collectSchemaTables, t as getLocalBackendEnvVars, u as logger, v as highlighter, w as EnableRLS, x as getIndexes, y as isColorEnabled } from "./local-env-CiPqNKS_.mjs";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
import fs, { existsSync, readFileSync } from "node:fs";
|
|
5
5
|
import path, { basename, delimiter, dirname, extname, isAbsolute, join, posix, relative, resolve } from "node:path";
|
package/dist/{generated-contract-disabled-DwYwySy3.d.ts → generated-contract-disabled-B3ByVG3_.d.ts}
RENAMED
|
@@ -224,7 +224,6 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>, DataModel e
|
|
|
224
224
|
};
|
|
225
225
|
}, Promise<Record<string, unknown> | undefined>>;
|
|
226
226
|
findMany: convex_server0.RegisteredQuery<"internal", {
|
|
227
|
-
limit?: number | undefined;
|
|
228
227
|
join?: any;
|
|
229
228
|
where?: {
|
|
230
229
|
mode?: "sensitive" | "insensitive" | undefined;
|
|
@@ -233,6 +232,7 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>, DataModel e
|
|
|
233
232
|
value: string | number | boolean | string[] | number[] | null;
|
|
234
233
|
field: string;
|
|
235
234
|
}[] | undefined;
|
|
235
|
+
limit?: number | undefined;
|
|
236
236
|
offset?: number | undefined;
|
|
237
237
|
sortBy?: {
|
|
238
238
|
direction: "asc" | "desc";
|
|
@@ -270,16 +270,16 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>, DataModel e
|
|
|
270
270
|
value: string | number | boolean | string[] | number[] | null;
|
|
271
271
|
field: string;
|
|
272
272
|
}[] | undefined;
|
|
273
|
-
model: string;
|
|
274
273
|
update: {
|
|
275
274
|
[x: string]: unknown;
|
|
276
275
|
[x: number]: unknown;
|
|
277
276
|
[x: symbol]: unknown;
|
|
278
277
|
};
|
|
278
|
+
model: string;
|
|
279
279
|
} | {
|
|
280
280
|
where?: any[] | undefined;
|
|
281
|
-
model: string;
|
|
282
281
|
update: any;
|
|
282
|
+
model: string;
|
|
283
283
|
};
|
|
284
284
|
paginationOpts: {
|
|
285
285
|
id?: number;
|
|
@@ -305,16 +305,16 @@ declare const createApi: <Schema extends SchemaDefinition<any, any>, DataModel e
|
|
|
305
305
|
value: string | number | boolean | string[] | number[] | null;
|
|
306
306
|
field: string;
|
|
307
307
|
}[] | undefined;
|
|
308
|
-
model: string;
|
|
309
308
|
update: {
|
|
310
309
|
[x: string]: unknown;
|
|
311
310
|
[x: number]: unknown;
|
|
312
311
|
[x: symbol]: unknown;
|
|
313
312
|
};
|
|
313
|
+
model: string;
|
|
314
314
|
} | {
|
|
315
315
|
where?: any[] | undefined;
|
|
316
|
-
model: string;
|
|
317
316
|
update: any;
|
|
317
|
+
model: string;
|
|
318
318
|
};
|
|
319
319
|
}, Promise<any>>;
|
|
320
320
|
};
|
|
@@ -473,8 +473,23 @@ export class CRPCError extends Error {
|
|
|
473
473
|
}
|
|
474
474
|
}
|
|
475
475
|
|
|
476
|
-
export const createEnv = ({ schema }) => () =>
|
|
477
|
-
typeof schema?.parse
|
|
476
|
+
export const createEnv = ({ schema }) => () => {
|
|
477
|
+
if (typeof schema?.parse !== "function") return process.env;
|
|
478
|
+
if (globalThis.__KITCN_CODEGEN__ !== true || !schema.shape) {
|
|
479
|
+
return schema.parse(process.env);
|
|
480
|
+
}
|
|
481
|
+
const fallback = Object.fromEntries(
|
|
482
|
+
Object.entries(schema.shape).map(([key, zodType]) => {
|
|
483
|
+
const result = zodType?.safeParse?.(undefined);
|
|
484
|
+
if (result?.success) return [key, result.data];
|
|
485
|
+
if (Array.isArray(zodType?.options) && zodType.options.length > 0) {
|
|
486
|
+
return [key, zodType.options[0]];
|
|
487
|
+
}
|
|
488
|
+
return [key, ""];
|
|
489
|
+
})
|
|
490
|
+
);
|
|
491
|
+
return schema.parse({ ...fallback, ...process.env });
|
|
492
|
+
};
|
|
478
493
|
export const createHttpRouter = (_app, httpRouter) => httpRouter ?? {};
|
|
479
494
|
export const createCallerFactory = () => () => ({});
|
|
480
495
|
export const createApiLeaf = (fnOrRoot, pathOrMeta, maybeMeta) => {
|
|
@@ -2587,6 +2602,9 @@ const TS_EXTENSION_RE = /\.ts$/;
|
|
|
2587
2602
|
/** Pattern to detect default exports in auth contract files. */
|
|
2588
2603
|
const DEFAULT_EXPORT_RE = /\bexport\s+default\b/;
|
|
2589
2604
|
const MISSING_KITCN_IMPORT_RE = /Cannot find (?:module|package) ['"]kitcn(?:\/[^'"]+)?['"]/;
|
|
2605
|
+
const LEGACY_PROCEDURE_LOOKUP_START_RE = /\bregisterProcedureNameLookup\s*\(\s*(\{)/;
|
|
2606
|
+
const LEGACY_PROCEDURE_FILE_RE = /("(?:\\.|[^"\\])*")\s*:\s*\[([\s\S]*?)\]\s*,?/g;
|
|
2607
|
+
const LEGACY_PROCEDURE_ENTRY_RE = /\{\s*column:\s*(\d+)\s*,\s*line:\s*(\d+)\s*,\s*name:\s*("(?:\\.|[^"\\])*")\s*\}/g;
|
|
2590
2608
|
const RUNTIME_CALLER_RESERVED_EXPORTS = new Set(["actions", "schedule"]);
|
|
2591
2609
|
const DEFAULT_TRIM_SEGMENTS = ["plugins", "generated"];
|
|
2592
2610
|
const CODEGEN_SCOPES$1 = new Set([
|
|
@@ -2784,6 +2802,59 @@ function emitProcedureNameLookupLiteral(lookup) {
|
|
|
2784
2802
|
return ` ${JSON.stringify(file)}: [${items}],`;
|
|
2785
2803
|
}).join("\n")}\n}`;
|
|
2786
2804
|
}
|
|
2805
|
+
function extractObjectLiteral(source, startIndex) {
|
|
2806
|
+
let depth = 0;
|
|
2807
|
+
let quote = null;
|
|
2808
|
+
let escaped = false;
|
|
2809
|
+
for (let index = startIndex; index < source.length; index += 1) {
|
|
2810
|
+
const character = source[index];
|
|
2811
|
+
if (quote) {
|
|
2812
|
+
if (escaped) escaped = false;
|
|
2813
|
+
else if (character === "\\") escaped = true;
|
|
2814
|
+
else if (character === quote) quote = null;
|
|
2815
|
+
continue;
|
|
2816
|
+
}
|
|
2817
|
+
if (character === "\"" || character === "'") quote = character;
|
|
2818
|
+
else if (character === "{") depth += 1;
|
|
2819
|
+
else if (character === "}") {
|
|
2820
|
+
depth -= 1;
|
|
2821
|
+
if (depth === 0) return source.slice(startIndex, index + 1);
|
|
2822
|
+
}
|
|
2823
|
+
}
|
|
2824
|
+
return null;
|
|
2825
|
+
}
|
|
2826
|
+
function readLegacyProcedureNameLookup(serverOutputFile) {
|
|
2827
|
+
if (!fs.existsSync(serverOutputFile)) return;
|
|
2828
|
+
const source = fs.readFileSync(serverOutputFile, "utf8");
|
|
2829
|
+
const startMatch = LEGACY_PROCEDURE_LOOKUP_START_RE.exec(source);
|
|
2830
|
+
if (!startMatch || startMatch.index === void 0) return;
|
|
2831
|
+
const literal = extractObjectLiteral(source, startMatch.index + startMatch[0].lastIndexOf("{"));
|
|
2832
|
+
if (!literal) return;
|
|
2833
|
+
if (literal.trim() === "{}") return {};
|
|
2834
|
+
const lookup = {};
|
|
2835
|
+
for (const fileMatch of literal.matchAll(LEGACY_PROCEDURE_FILE_RE)) {
|
|
2836
|
+
const fileLiteral = fileMatch[1];
|
|
2837
|
+
const entriesLiteral = fileMatch[2];
|
|
2838
|
+
if (!fileLiteral || entriesLiteral === void 0) return;
|
|
2839
|
+
const file = JSON.parse(fileLiteral);
|
|
2840
|
+
if (typeof file !== "string") return;
|
|
2841
|
+
const entries = [];
|
|
2842
|
+
for (const entryMatch of entriesLiteral.matchAll(LEGACY_PROCEDURE_ENTRY_RE)) {
|
|
2843
|
+
const nameLiteral = entryMatch[3];
|
|
2844
|
+
if (!nameLiteral) return;
|
|
2845
|
+
const name = JSON.parse(nameLiteral);
|
|
2846
|
+
if (typeof name !== "string") return;
|
|
2847
|
+
entries.push({
|
|
2848
|
+
column: Number(entryMatch[1]),
|
|
2849
|
+
line: Number(entryMatch[2]),
|
|
2850
|
+
name
|
|
2851
|
+
});
|
|
2852
|
+
}
|
|
2853
|
+
if (entries.length === 0) return;
|
|
2854
|
+
lookup[file] = entries;
|
|
2855
|
+
}
|
|
2856
|
+
return Object.keys(lookup).length > 0 ? lookup : void 0;
|
|
2857
|
+
}
|
|
2787
2858
|
function formatKey(key) {
|
|
2788
2859
|
return VALID_IDENTIFIER_RE.test(key) ? key : `'${key}'`;
|
|
2789
2860
|
}
|
|
@@ -2877,6 +2948,20 @@ function getModuleImportPath(outputFile, functionsDir, moduleName) {
|
|
|
2877
2948
|
const moduleFile = path.join(functionsDir, moduleName);
|
|
2878
2949
|
return ensureRelativeImportPath(normalizeImportPath(path.relative(path.dirname(outputFile), moduleFile)));
|
|
2879
2950
|
}
|
|
2951
|
+
/**
|
|
2952
|
+
* Convex's own generated server module. `convex codegen` writes it, and kitcn
|
|
2953
|
+
* codegen runs before it on a first bootstrap, so it can legitimately be
|
|
2954
|
+
* missing.
|
|
2955
|
+
*/
|
|
2956
|
+
function getConvexGeneratedServerFile(functionsDir) {
|
|
2957
|
+
const base = path.join(functionsDir, "_generated", "server");
|
|
2958
|
+
return [
|
|
2959
|
+
".js",
|
|
2960
|
+
".ts",
|
|
2961
|
+
".mjs",
|
|
2962
|
+
".cjs"
|
|
2963
|
+
].map((extension) => `${base}${extension}`).find((candidate) => fs.existsSync(candidate));
|
|
2964
|
+
}
|
|
2880
2965
|
function getRuntimeApiImportPath(outputFile, functionsDir) {
|
|
2881
2966
|
const runtimeApiFile = path.join(functionsDir, "_generated", "api.js");
|
|
2882
2967
|
return ensureRelativeImportPath(normalizeImportPath(path.relative(path.dirname(outputFile), runtimeApiFile)));
|
|
@@ -2931,6 +3016,17 @@ function getGeneratedAuthOutputFile(functionsDir) {
|
|
|
2931
3016
|
function getGeneratedMigrationsHelperOutputFile(functionsDir) {
|
|
2932
3017
|
return path.join(functionsDir, GENERATED_DIR, "migrations.gen.ts");
|
|
2933
3018
|
}
|
|
3019
|
+
/**
|
|
3020
|
+
* The only parse-derived input to `generated/server.ts`, split into its own
|
|
3021
|
+
* module so `server.ts` stays fully determined by pre-parse facts and can be
|
|
3022
|
+
* written before codegen evaluates the modules that import it.
|
|
3023
|
+
*
|
|
3024
|
+
* Two dots in the basename keep Convex's entry-point walker from deploying it
|
|
3025
|
+
* as a function module, matching `migrations.gen.ts`.
|
|
3026
|
+
*/
|
|
3027
|
+
function getGeneratedProcedureNamesOutputFile(functionsDir) {
|
|
3028
|
+
return path.join(functionsDir, GENERATED_DIR, "procedure-names.gen.ts");
|
|
3029
|
+
}
|
|
2934
3030
|
function getLegacyGeneratedOutputFile(functionsDir) {
|
|
2935
3031
|
return path.join(functionsDir, "generated.ts");
|
|
2936
3032
|
}
|
|
@@ -2992,6 +3088,19 @@ export const getAuth = () => ({} as Record<string, unknown>);
|
|
|
2992
3088
|
export const auth = {} as Record<string, unknown>;
|
|
2993
3089
|
`;
|
|
2994
3090
|
}
|
|
3091
|
+
/**
|
|
3092
|
+
* Pure data, zero imports: nothing here can throw while codegen evaluates the
|
|
3093
|
+
* project, and the value export survives tree-shaking even when the app sets
|
|
3094
|
+
* `"sideEffects": false` (a bare side-effect import would not).
|
|
3095
|
+
*/
|
|
3096
|
+
function emitGeneratedProcedureNamesFile(procedureNameLookup) {
|
|
3097
|
+
return `// biome-ignore-all format: generated
|
|
3098
|
+
// This file is auto-generated by kitcn
|
|
3099
|
+
// Do not edit manually. Run \`kitcn codegen\` to regenerate.
|
|
3100
|
+
|
|
3101
|
+
export const procedureNames = ${emitProcedureNameLookupLiteral(procedureNameLookup)};
|
|
3102
|
+
`;
|
|
3103
|
+
}
|
|
2995
3104
|
function emitGeneratedMigrationsPlaceholderFile() {
|
|
2996
3105
|
return `// biome-ignore-all format: generated
|
|
2997
3106
|
/* eslint-disable @typescript-eslint/no-require-imports, @typescript-eslint/no-unused-vars */
|
|
@@ -3010,16 +3119,25 @@ function writeFileIfChanged(filePath, content) {
|
|
|
3010
3119
|
}
|
|
3011
3120
|
function ensureGeneratedSupportPlaceholders(functionsDir, options) {
|
|
3012
3121
|
const createdPlaceholderFiles = [];
|
|
3122
|
+
const replacedFiles = [];
|
|
3013
3123
|
const serverOutputFile = getGeneratedServerOutputFile(functionsDir);
|
|
3014
3124
|
const authOutputFile = getGeneratedAuthOutputFile(functionsDir);
|
|
3015
3125
|
const migrationsHelperOutputFile = getGeneratedMigrationsHelperOutputFile(functionsDir);
|
|
3126
|
+
const procedureNamesOutputFile = getGeneratedProcedureNamesOutputFile(functionsDir);
|
|
3016
3127
|
const generatedDir = path.dirname(serverOutputFile);
|
|
3017
3128
|
fs.mkdirSync(generatedDir, { recursive: true });
|
|
3018
3129
|
const includeAuth = options?.includeAuth ?? true;
|
|
3019
3130
|
if (!fs.existsSync(serverOutputFile)) {
|
|
3020
3131
|
writeFileIfChanged(serverOutputFile, emitGeneratedServerPlaceholderFile(functionsDir));
|
|
3021
3132
|
createdPlaceholderFiles.push(serverOutputFile);
|
|
3133
|
+
} else if (options?.replaceServer) {
|
|
3134
|
+
const content = fs.readFileSync(serverOutputFile, "utf8");
|
|
3135
|
+
if (writeFileIfChanged(serverOutputFile, emitGeneratedServerPlaceholderFile(functionsDir))) replacedFiles.push({
|
|
3136
|
+
content,
|
|
3137
|
+
filePath: serverOutputFile
|
|
3138
|
+
});
|
|
3022
3139
|
}
|
|
3140
|
+
if (!fs.existsSync(procedureNamesOutputFile)) writeFileIfChanged(procedureNamesOutputFile, emitGeneratedProcedureNamesFile(options?.procedureNameLookup ?? {}));
|
|
3023
3141
|
if (includeAuth && !fs.existsSync(authOutputFile)) {
|
|
3024
3142
|
writeFileIfChanged(authOutputFile, emitGeneratedAuthPlaceholderFile());
|
|
3025
3143
|
createdPlaceholderFiles.push(authOutputFile);
|
|
@@ -3028,7 +3146,22 @@ function ensureGeneratedSupportPlaceholders(functionsDir, options) {
|
|
|
3028
3146
|
writeFileIfChanged(migrationsHelperOutputFile, emitGeneratedMigrationsPlaceholderFile());
|
|
3029
3147
|
createdPlaceholderFiles.push(migrationsHelperOutputFile);
|
|
3030
3148
|
}
|
|
3031
|
-
return
|
|
3149
|
+
return {
|
|
3150
|
+
createdFiles: createdPlaceholderFiles,
|
|
3151
|
+
replacedFiles
|
|
3152
|
+
};
|
|
3153
|
+
}
|
|
3154
|
+
async function withCodegenParseSentinel(callback) {
|
|
3155
|
+
const globals = globalThis;
|
|
3156
|
+
const hadSentinel = Object.hasOwn(globals, "__KITCN_CODEGEN__");
|
|
3157
|
+
const previousSentinel = globals.__KITCN_CODEGEN__;
|
|
3158
|
+
globals.__KITCN_CODEGEN__ = true;
|
|
3159
|
+
try {
|
|
3160
|
+
return await callback();
|
|
3161
|
+
} finally {
|
|
3162
|
+
if (hadSentinel) globals.__KITCN_CODEGEN__ = previousSentinel;
|
|
3163
|
+
else delete globals.__KITCN_CODEGEN__;
|
|
3164
|
+
}
|
|
3032
3165
|
}
|
|
3033
3166
|
function emitGeneratedRuntimePlaceholderFile(exportNames) {
|
|
3034
3167
|
const { callerExportName, handlerExportName } = exportNames;
|
|
@@ -3086,8 +3219,7 @@ async function resolveSchemaMetadataForCodegen(functionsDir, debug, createJitiIn
|
|
|
3086
3219
|
hasTriggers
|
|
3087
3220
|
};
|
|
3088
3221
|
} catch (error) {
|
|
3089
|
-
|
|
3090
|
-
return EMPTY_SCHEMA_METADATA;
|
|
3222
|
+
throw new Error(`kitcn codegen could not load ${schemaPath}: ${error.message}`, { cause: error });
|
|
3091
3223
|
}
|
|
3092
3224
|
}
|
|
3093
3225
|
/**
|
|
@@ -3108,7 +3240,13 @@ function cleanupGeneratedPluginArtifacts(functionsDir) {
|
|
|
3108
3240
|
force: true
|
|
3109
3241
|
});
|
|
3110
3242
|
}
|
|
3111
|
-
|
|
3243
|
+
/**
|
|
3244
|
+
* Every input here is known before codegen evaluates any project module, so
|
|
3245
|
+
* this file is written first and is authoritative: a stale copy on disk is
|
|
3246
|
+
* replaced before anything can import it. The parse-derived procedure-name
|
|
3247
|
+
* lookup lives in `procedure-names.gen.ts` to keep that true.
|
|
3248
|
+
*/
|
|
3249
|
+
function emitGeneratedServerFile(outputFile, functionsDir, hasOrmSchema, hasAggregateIndexes, hasMigrationsManifest) {
|
|
3112
3250
|
const asSingleQuotedImport = (importPath) => `'${importPath.replaceAll("'", "\\'")}'`;
|
|
3113
3251
|
const serverTypesImportPath = getServerTypesImportPath(outputFile, functionsDir);
|
|
3114
3252
|
const dataModelImportPath = getDataModelImportPath(outputFile, functionsDir);
|
|
@@ -3124,7 +3262,7 @@ function emitGeneratedServerFile(outputFile, functionsDir, hasOrmSchema, hasAggr
|
|
|
3124
3262
|
const capabilityEntries = [...hasAggregateIndexes ? ["aggregateCapability()"] : [], ...hasMigrationsManifest ? ["migrationCapability()"] : []];
|
|
3125
3263
|
const capabilitiesConfigLine = capabilityEntries.length > 0 ? ` capabilities: [${capabilityEntries.join(", ")}],\n` : "";
|
|
3126
3264
|
const functionsDirHint = normalizeImportPath(path.relative(process.cwd(), functionsDir)) || "convex";
|
|
3127
|
-
const
|
|
3265
|
+
const procedureNamesImportLiteral = asSingleQuotedImport(ensureRelativeImportPath(normalizeImportPath(path.relative(path.dirname(outputFile), getGeneratedProcedureNamesOutputFile(functionsDir))).replace(TS_EXTENSION_RE, "")));
|
|
3128
3266
|
if (!hasOrmSchema) return `// biome-ignore-all format: generated
|
|
3129
3267
|
// This file is auto-generated by kitcn
|
|
3130
3268
|
// Do not edit manually. Run \`kitcn codegen\` to regenerate.
|
|
@@ -3140,6 +3278,7 @@ import type {
|
|
|
3140
3278
|
QueryCtx as ServerQueryCtx,
|
|
3141
3279
|
} from ${serverTypesImportLiteral};
|
|
3142
3280
|
import { httpAction, internalMutation } from ${serverTypesImportLiteral};
|
|
3281
|
+
import { procedureNames } from ${procedureNamesImportLiteral};
|
|
3143
3282
|
|
|
3144
3283
|
export type QueryCtx = ServerQueryCtx;
|
|
3145
3284
|
export type MutationCtx = ServerMutationCtx;
|
|
@@ -3147,10 +3286,7 @@ export type ActionCtx = ServerActionCtx;
|
|
|
3147
3286
|
export type GenericCtx = QueryCtx | MutationCtx | ActionCtx;
|
|
3148
3287
|
export type OrmCtx<Ctx = QueryCtx> = Ctx;
|
|
3149
3288
|
|
|
3150
|
-
registerProcedureNameLookup(
|
|
3151
|
-
${procedureNameLookupLiteral},
|
|
3152
|
-
${JSON.stringify(functionsDirHint)}
|
|
3153
|
-
);
|
|
3289
|
+
registerProcedureNameLookup(procedureNames, ${JSON.stringify(functionsDirHint)});
|
|
3154
3290
|
|
|
3155
3291
|
export function withOrm<Ctx extends ServerQueryCtx | ServerMutationCtx>(ctx: Ctx): OrmCtx<Ctx> {
|
|
3156
3292
|
return ctx as OrmCtx<Ctx>;
|
|
@@ -3187,6 +3323,7 @@ import type {
|
|
|
3187
3323
|
} from ${serverTypesImportLiteral};
|
|
3188
3324
|
import { httpAction, internalMutation } from ${serverTypesImportLiteral};
|
|
3189
3325
|
import schema from ${schemaImportLiteral};
|
|
3326
|
+
import { procedureNames } from ${procedureNamesImportLiteral};
|
|
3190
3327
|
${migrationsImportLine}
|
|
3191
3328
|
|
|
3192
3329
|
${`const ormFunctions: OrmFunctions = {
|
|
@@ -3198,10 +3335,7 @@ ${`const ormFunctions: OrmFunctions = {
|
|
|
3198
3335
|
};`}
|
|
3199
3336
|
const ormSchema = schema;
|
|
3200
3337
|
|
|
3201
|
-
registerProcedureNameLookup(
|
|
3202
|
-
${procedureNameLookupLiteral},
|
|
3203
|
-
${JSON.stringify(functionsDirHint)}
|
|
3204
|
-
);
|
|
3338
|
+
registerProcedureNameLookup(procedureNames, ${JSON.stringify(functionsDirHint)});
|
|
3205
3339
|
|
|
3206
3340
|
export const orm = createOrm({
|
|
3207
3341
|
schema: ormSchema,
|
|
@@ -3745,6 +3879,7 @@ async function generateMeta(sharedDir, options) {
|
|
|
3745
3879
|
const crpcOutputFile = getGeneratedCrpcOutputFile(functionsDir);
|
|
3746
3880
|
const authOutputFile = getGeneratedAuthOutputFile(functionsDir);
|
|
3747
3881
|
const migrationsHelperOutputFile = getGeneratedMigrationsHelperOutputFile(functionsDir);
|
|
3882
|
+
const procedureNamesOutputFile = getGeneratedProcedureNamesOutputFile(functionsDir);
|
|
3748
3883
|
const legacyGeneratedMigrationsOutputFile = path.join(functionsDir, GENERATED_DIR, "migrations.ts");
|
|
3749
3884
|
const legacyGeneratedMigrationsRuntimeOutputFile = path.join(functionsDir, GENERATED_DIR, "migrations.runtime.ts");
|
|
3750
3885
|
const legacyGeneratedMigrationsUnderscoreOutputFile = path.join(functionsDir, GENERATED_DIR, "_migrations.ts");
|
|
@@ -3761,7 +3896,10 @@ async function generateMeta(sharedDir, options) {
|
|
|
3761
3896
|
const procedureNameLookup = {};
|
|
3762
3897
|
const fatalParseFailures = [];
|
|
3763
3898
|
let createdRuntimePlaceholders = [];
|
|
3764
|
-
let
|
|
3899
|
+
let supportPlaceholderState = {
|
|
3900
|
+
createdFiles: [],
|
|
3901
|
+
replacedFiles: []
|
|
3902
|
+
};
|
|
3765
3903
|
const runtimeFilesPreservedFromParseFailures = /* @__PURE__ */ new Set();
|
|
3766
3904
|
let totalFunctions = 0;
|
|
3767
3905
|
const authFilePath = path.join(functionsDir, "auth.ts");
|
|
@@ -3773,7 +3911,7 @@ async function generateMeta(sharedDir, options) {
|
|
|
3773
3911
|
};
|
|
3774
3912
|
let sharedJitiInstance;
|
|
3775
3913
|
const getSharedJitiInstance = () => sharedJitiInstance ??= createProjectJiti();
|
|
3776
|
-
const schemaMetadata = await resolveSchemaMetadataForCodegen(functionsDir, debug, getSharedJitiInstance);
|
|
3914
|
+
const schemaMetadata = await withCodegenParseSentinel(() => resolveSchemaMetadataForCodegen(functionsDir, debug, getSharedJitiInstance));
|
|
3777
3915
|
const hasOrmSchemaMetadata = schemaMetadata.hasOrmSchema;
|
|
3778
3916
|
const hasRelationsMetadata = schemaMetadata.hasRelations;
|
|
3779
3917
|
const hasRelationsExport = hasNamedExport(path.join(functionsDir, "schema.ts"), "relations");
|
|
@@ -3783,7 +3921,14 @@ async function generateMeta(sharedDir, options) {
|
|
|
3783
3921
|
if (hasRelationsExport) throw new Error("Codegen error: do not export `relations` from schema.ts. Chain relations on the default schema export with `defineSchema(...).relations(...)`.");
|
|
3784
3922
|
if (hasSchemaTriggersExport || hasDedicatedTriggersExport) throw new Error("Codegen error: do not export `triggers` from schema.ts or triggers.ts. Chain triggers on the default schema export with `defineSchema(...).relations(...).triggers(...)`.");
|
|
3785
3923
|
const hasOrmSchema = hasOrmSchemaMetadata;
|
|
3786
|
-
|
|
3924
|
+
const convexGeneratedServerFile = getConvexGeneratedServerFile(functionsDir);
|
|
3925
|
+
supportPlaceholderState = ensureGeneratedSupportPlaceholders(functionsDir, {
|
|
3926
|
+
includeAuth: generateAuth,
|
|
3927
|
+
procedureNameLookup: fs.existsSync(procedureNamesOutputFile) ? void 0 : readLegacyProcedureNameLookup(serverOutputFile),
|
|
3928
|
+
replaceServer: convexGeneratedServerFile === void 0
|
|
3929
|
+
});
|
|
3930
|
+
const emitServerFile = () => writeFileIfChanged(serverOutputFile, emitGeneratedServerFile(serverOutputFile, functionsDir, hasOrmSchema, schemaMetadata.hasAggregateIndexes, hasMigrationsManifest));
|
|
3931
|
+
if (convexGeneratedServerFile) emitServerFile();
|
|
3787
3932
|
if (generateApi) {
|
|
3788
3933
|
globalThis.__KITCN_CODEGEN__ = true;
|
|
3789
3934
|
try {
|
|
@@ -3844,7 +3989,8 @@ async function generateMeta(sharedDir, options) {
|
|
|
3844
3989
|
}
|
|
3845
3990
|
if (fatalParseFailures.length > 0) {
|
|
3846
3991
|
for (const createdRuntimePlaceholder of createdRuntimePlaceholders) fs.rmSync(createdRuntimePlaceholder, { force: true });
|
|
3847
|
-
for (const createdSupportPlaceholder of
|
|
3992
|
+
for (const createdSupportPlaceholder of supportPlaceholderState.createdFiles) fs.rmSync(createdSupportPlaceholder, { force: true });
|
|
3993
|
+
for (const replacedSupportFile of supportPlaceholderState.replacedFiles) fs.writeFileSync(replacedSupportFile.filePath, replacedSupportFile.content, "utf8");
|
|
3848
3994
|
const failureSummary = fatalParseFailures.map(({ file, error }) => `- ${file}: ${error instanceof Error ? error.message : String(error)}`).join("\n");
|
|
3849
3995
|
throw new Error(`kitcn codegen aborted because module parsing failed:\n${failureSummary}`);
|
|
3850
3996
|
}
|
|
@@ -3906,10 +4052,10 @@ ${optionalTypeExports}
|
|
|
3906
4052
|
if (!fs.existsSync(outputDirname)) fs.mkdirSync(outputDirname, { recursive: true });
|
|
3907
4053
|
writeFileIfChanged(outputFile, output);
|
|
3908
4054
|
} else fs.rmSync(outputFile, { force: true });
|
|
3909
|
-
const serverOutput = emitGeneratedServerFile(serverOutputFile, functionsDir, hasOrmSchema, schemaMetadata.hasAggregateIndexes, hasMigrationsManifest, procedureNameLookup);
|
|
3910
4055
|
const generatedOutputDirname = path.dirname(serverOutputFile);
|
|
3911
4056
|
if (!fs.existsSync(generatedOutputDirname)) fs.mkdirSync(generatedOutputDirname, { recursive: true });
|
|
3912
|
-
|
|
4057
|
+
emitServerFile();
|
|
4058
|
+
if (generateApi) writeFileIfChanged(procedureNamesOutputFile, emitGeneratedProcedureNamesFile(procedureNameLookup));
|
|
3913
4059
|
if (hasOrmSchema) writeFileIfChanged(aggregateOutputFile, emitGeneratedAggregateFile(aggregateOutputFile, functionsDir));
|
|
3914
4060
|
else fs.rmSync(aggregateOutputFile, { force: true });
|
|
3915
4061
|
fs.rmSync(ormOutputFile, { force: true });
|
package/dist/orm/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { $n as BinaryExpression, $t as OrmLifecycleOperation, A as DatabaseWithMutations, An as ConvexCheckConfig, Ar as AnyColumn, At as VectorQueryConfig, B as RlsContext, Bn as ConvexTextBuilderInitial, Br as IsUnique, Bt as RelationsBuilderColumnConfig, C as MigrationTableName, Cn as aggregateIndex, Cr as notBetween, Ct as OrderDirection, D as defineMigrationSet, Dn as uniqueIndex, Dt as ReturningResult, E as defineMigration, En as searchIndex, Er as startsWith, Et as ReturningAll, Fn as ConvexUniqueConstraintConfig, Fr as ColumnBuilderWithTableName, Ft as ExtractTablesWithRelations, Gt as defineRelations, H as EdgeMetadata, In as check, Ir as ColumnDataType, It as ManyConfig, Jt as ConvexDeletionConfig, Kt as defineRelationsPart, Ln as foreignKey, Lr as DrizzleEntity, Lt as OneConfig, M as OrmReader$1, Mn as ConvexForeignKeyConfig, Mr as ColumnBuilderBaseConfig, Mt as unsetToken, N as OrmWriter$1, Nn as ConvexUniqueConstraintBuilder, Nr as ColumnBuilderRuntimeConfig, O as detectMigrationDrift, On as vectorIndex, Or as SystemFields, Ot as ReturningSelection, Pn as ConvexUniqueConstraintBuilderOn, Pr as ColumnBuilderTypeConfig, Pt as ExtractTablesFromSchema, Qn as TableName, Qt as OrmLifecycleChange, Rn as unique, Rr as HasDefault, Rt as RelationsBuilder, S as MigrationStep, Sn as ConvexVectorIndexConfig, Sr as not, St as OrderByClause, T as buildMigrationPlan, Tn as rankIndex, Tr as or, Tt as PredicateWhereIndexConfig, U as extractRelationsConfig, Un as Brand, Ut as TableRelationalConfig, V as RlsMode, Vn as text, Vr as NotNull, Wn as Columns, Wt as TablesRelationalConfig, Xn as OrmSchemaRelations, Xt as ConvexTableWithColumns, Yn as OrmSchemaExtensions, Yt as ConvexTable, Zn as OrmSchemaTriggers, Zt as DiscriminatorBuilderConfig, _ as MigrationMigrateOne, _n as ConvexSearchIndexBuilder, _r as isNull, _t as MutationPaginateConfig, an as RlsPolicyConfig, ar as and, at as CountConfig, b as MigrationSet, bn as ConvexVectorIndexBuilder, br as lte, bt as MutationReturning, cn as RlsRole, cr as endsWith, ct as FilterOperators, d as MigrationDefinition, dn as ConvexAggregateIndexBuilder, dr as gt, dt as InferModelFromColumns, en as TableConfig, er as ExpressionVisitor, et as AggregateConfig, f as MigrationDirection, fn as ConvexAggregateIndexBuilderOn, fr as gte, ft as InferSelectModel, g as MigrationManifestEntry, gn as ConvexRankIndexBuilderOn, gr as isNotNull, gt as MutationExecutionMode, h as MigrationDriftIssue, hn as ConvexRankIndexBuilder, hr as isFieldReference, ht as MutationExecuteResult, i as OrmMigrationCapability, in as RlsPolicy, ir as UnaryExpression, it as BuildRelationResult, j as DatabaseWithQuery, jn as ConvexForeignKeyBuilder, jr as ColumnBuilder, jt as VectorSearchProvider, kn as ConvexCheckBuilder, kt as UpdateSet, ln as RlsRoleConfig, lr as eq, lt as GetColumnData, m as MigrationDocContext, mn as ConvexIndexBuilderOn, mr as inArray, mt as MutationExecuteConfig, n as OrmCapabilities, nn as deletion, nr as FilterExpression, nt as AggregateResult, on as RlsPolicyToOption, or as between, ot as CountResult, p as MigrationDoc, pn as ConvexIndexBuilder, pr as ilike, pt as InsertValue, qn as OrmSchemaExtensionTables, qt as ConvexDeletionBuilder, r as OrmCapability, rn as discriminator, rr as LogicalExpression, rt as BuildQueryResult, sn as rlsPolicy, sr as contains, st as DBQueryConfig, t as OrmAggregateCapability, tn as convexTable, tr as FieldReference, tt as AggregateFieldValue, u as MigrationAppliedState, un as rlsRole, ur as fieldRef, ut as InferInsertModel, v as MigrationPlan, vn as ConvexSearchIndexBuilderOn, vr as like, vt as MutationPaginatedResult, w as MigrationWriteMode, wn as index, wr as notInArray, wt as PaginatedResult, x as MigrationStateMap, xn as ConvexVectorIndexBuilderOn, xr as ne, xt as MutationRunMode, y as MigrationRunStatus, yn as ConvexSearchIndexConfig, yr as lt, yt as MutationResult, zn as ConvexTextBuilder, zr as IsPrimaryKey, zt as RelationsBuilderColumnBase } from "../capabilities-DtDfpdcH.js";
|
|
2
|
-
import { $ as OrmClientWithApi$1, A as ConvexDateMode, B as ConvexBytesBuilderInitial, C as ConvexNumberBuilderInitial, D as id, E as ConvexIdBuilderInitial, F as custom, G as ConvexBigIntBuilder, H as ConvexBooleanBuilder, I as json, J as CreateOrmOptions, K as ConvexBigIntBuilderInitial, L as objectOf, M as ConvexCustomBuilder, N as ConvexCustomBuilderInitial, O as ConvexDateBuilder, P as arrayOf, Q as OrmClientBase$1, R as unionOf, S as ConvexNumberBuilder, St as defineTriggers, T as ConvexIdBuilder, U as ConvexBooleanBuilderInitial, V as bytes, W as boolean, X as GenericOrmCtx$1, Y as GenericOrm$1, Z as OrmApiResult, _ as ConvexTimestampMode, _t as OrmBeforeResult, a as requireSchemaRelations, at as ScheduledMutationBatchArgs, b as ConvexTextEnumBuilderInitial, bt as OrmTriggerContext, c as TableConfigResult, ct as scheduledDeleteFactory, d as OrmNotFoundError, et as OrmFunctions, f as ConvexVectorBuilder, g as ConvexTimestampBuilderInitial, gt as defineSchemaExtension, h as ConvexTimestampBuilder, ht as SchemaExtension, i as getSchemaTriggers, it as createOrm, j as date, k as ConvexDateBuilderInitial, l as getTableColumns, m as vector, n as defineSchema, nt as OrmWriterCtx, o as asc, ot as scheduledMutationBatchFactory, p as ConvexVectorBuilderInitial, q as bigint, r as getSchemaRelations, rt as ResolveOrmSchema, s as desc, st as ScheduledDeleteArgs, t as WhereClauseResult, tt as OrmReaderCtx, u as getTableConfig, v as timestamp, vt as OrmTableTriggers, w as integer, x as textEnum, xt as OrmTriggers, y as ConvexTextEnumBuilder, yt as OrmTriggerChange, z as ConvexBytesBuilder } from "../where-clause-compiler-
|
|
2
|
+
import { $ as OrmClientWithApi$1, A as ConvexDateMode, B as ConvexBytesBuilderInitial, C as ConvexNumberBuilderInitial, D as id, E as ConvexIdBuilderInitial, F as custom, G as ConvexBigIntBuilder, H as ConvexBooleanBuilder, I as json, J as CreateOrmOptions, K as ConvexBigIntBuilderInitial, L as objectOf, M as ConvexCustomBuilder, N as ConvexCustomBuilderInitial, O as ConvexDateBuilder, P as arrayOf, Q as OrmClientBase$1, R as unionOf, S as ConvexNumberBuilder, St as defineTriggers, T as ConvexIdBuilder, U as ConvexBooleanBuilderInitial, V as bytes, W as boolean, X as GenericOrmCtx$1, Y as GenericOrm$1, Z as OrmApiResult, _ as ConvexTimestampMode, _t as OrmBeforeResult, a as requireSchemaRelations, at as ScheduledMutationBatchArgs, b as ConvexTextEnumBuilderInitial, bt as OrmTriggerContext, c as TableConfigResult, ct as scheduledDeleteFactory, d as OrmNotFoundError, et as OrmFunctions, f as ConvexVectorBuilder, g as ConvexTimestampBuilderInitial, gt as defineSchemaExtension, h as ConvexTimestampBuilder, ht as SchemaExtension, i as getSchemaTriggers, it as createOrm, j as date, k as ConvexDateBuilderInitial, l as getTableColumns, m as vector, n as defineSchema, nt as OrmWriterCtx, o as asc, ot as scheduledMutationBatchFactory, p as ConvexVectorBuilderInitial, q as bigint, r as getSchemaRelations, rt as ResolveOrmSchema, s as desc, st as ScheduledDeleteArgs, t as WhereClauseResult, tt as OrmReaderCtx, u as getTableConfig, v as timestamp, vt as OrmTableTriggers, w as integer, x as textEnum, xt as OrmTriggers, y as ConvexTextEnumBuilder, yt as OrmTriggerChange, z as ConvexBytesBuilder } from "../where-clause-compiler-DlRUDuMx.js";
|
|
3
3
|
import { i as pretendRequired, n as deprecated, r as pretend } from "../validators-wOIjhkfN.js";
|
|
4
4
|
import { a as QueryCtxWithPreferredOrmQueryTable, i as QueryCtxWithOrmQueryTable, n as LookupByIdResultByCtx, o as getByIdWithOrmQueryFallback, r as QueryCtxWithOptionalOrmQueryTable, t as DocByCtx } from "../query-context-DJONf8X5.js";
|
|
5
5
|
import { DefineSchemaOptions, GenericDatabaseReader, GenericDatabaseWriter, GenericSchema, SchemaDefinition } from "convex/server";
|
package/dist/orm/index.js
CHANGED
|
@@ -277,7 +277,7 @@ const resolveOrmCapabilities = (capabilities) => {
|
|
|
277
277
|
}
|
|
278
278
|
return resolved;
|
|
279
279
|
};
|
|
280
|
-
const AGGREGATE_SETUP_HINT = "Generated ORM:
|
|
280
|
+
const AGGREGATE_SETUP_HINT = "Generated ORM: `kitcn codegen` registers the capability in <functionsDir>/generated/server.ts from the aggregateIndex(...)/rankIndex(...) declarations in your schema — if you are seeing this from that generated file, delete it and run `kitcn codegen` again. Hand-written ORM: import { aggregateCapability } from 'kitcn/orm/aggregate-index' and pass createOrm({ schema, capabilities: [aggregateCapability()] }).";
|
|
281
281
|
const missingAggregateCapabilityError = (usage) => /* @__PURE__ */ new Error(`${usage} requires the aggregate capability. ${AGGREGATE_SETUP_HINT}`);
|
|
282
282
|
const requireAggregateCapability = (capabilities, usage) => {
|
|
283
283
|
const aggregate = capabilities?.aggregate;
|
|
@@ -286,7 +286,7 @@ const requireAggregateCapability = (capabilities, usage) => {
|
|
|
286
286
|
};
|
|
287
287
|
const requireMigrationCapability = (capabilities, usage) => {
|
|
288
288
|
const migrations = capabilities?.migrations;
|
|
289
|
-
if (!migrations) throw new Error(`${usage} requires the migration capability. Generated ORM:
|
|
289
|
+
if (!migrations) throw new Error(`${usage} requires the migration capability. Generated ORM: \`kitcn codegen\` registers the capability in <functionsDir>/generated/server.ts once <functionsDir>/migrations/manifest.ts exists — if you are seeing this from that generated file, delete it and run \`kitcn codegen\` again. Hand-written ORM: import { migrationCapability } from 'kitcn/orm/migrations' and pass createOrm({ schema, capabilities: [migrationCapability()] }).`);
|
|
290
290
|
return migrations;
|
|
291
291
|
};
|
|
292
292
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { C as MigrationTableName, D as defineMigrationSet, E as defineMigration, O as detectMigrationDrift, S as MigrationStep, T as buildMigrationPlan, _ as MigrationMigrateOne, a as MigrationCancelArgs, b as MigrationSet, c as MigrationStatusArgs, d as MigrationDefinition, f as MigrationDirection, g as MigrationManifestEntry, h as MigrationDriftIssue, l as createMigrationHandlers, m as MigrationDocContext, o as MigrationRunArgs, p as MigrationDoc, s as MigrationRunChunkArgs, u as MigrationAppliedState, v as MigrationPlan, w as MigrationWriteMode, x as MigrationStateMap, y as MigrationRunStatus } from "../../capabilities-DtDfpdcH.js";
|
|
2
|
-
import { Ct as migrationCapability, dt as MIGRATION_STORAGE_TABLE_NAMES, ft as injectMigrationStorageTables, lt as MIGRATION_RUN_TABLE, mt as migrationStorageTables, pt as migrationExtension, ut as MIGRATION_STATE_TABLE } from "../../where-clause-compiler-
|
|
2
|
+
import { Ct as migrationCapability, dt as MIGRATION_STORAGE_TABLE_NAMES, ft as injectMigrationStorageTables, lt as MIGRATION_RUN_TABLE, mt as migrationStorageTables, pt as migrationExtension, ut as MIGRATION_STATE_TABLE } from "../../where-clause-compiler-DlRUDuMx.js";
|
|
3
3
|
export { MIGRATION_RUN_TABLE, MIGRATION_STATE_TABLE, MIGRATION_STORAGE_TABLE_NAMES, type MigrationAppliedState, type MigrationCancelArgs, type MigrationDefinition, type MigrationDirection, type MigrationDoc, type MigrationDocContext, type MigrationDriftIssue, type MigrationManifestEntry, type MigrationMigrateOne, type MigrationPlan, type MigrationRunArgs, type MigrationRunChunkArgs, type MigrationRunStatus, type MigrationSet, type MigrationStateMap, type MigrationStatusArgs, type MigrationStep, type MigrationTableName, type MigrationWriteMode, buildMigrationPlan, createMigrationHandlers, defineMigration, defineMigrationSet, detectMigrationDrift, injectMigrationStorageTables, migrationCapability, migrationExtension, migrationStorageTables };
|
package/dist/watcher.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as generateMeta, d as PARSE_SNAPSHOT_SUFFIX, i as resolveConfiguredBackend, n as withLocalCodegenEnv, o as getConvexConfig, r as loadCliConfig, u as logger } from "./local-env-
|
|
2
|
+
import { a as generateMeta, d as PARSE_SNAPSHOT_SUFFIX, i as resolveConfiguredBackend, n as withLocalCodegenEnv, o as getConvexConfig, r as loadCliConfig, u as logger } from "./local-env-CiPqNKS_.mjs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
|
|
@@ -102,15 +102,6 @@ declare const migrationStorageTables: {
|
|
|
102
102
|
fieldName: "status";
|
|
103
103
|
};
|
|
104
104
|
};
|
|
105
|
-
cursor: ConvexTextBuilderInitial<""> & {
|
|
106
|
-
_: {
|
|
107
|
-
tableName: "migration_state";
|
|
108
|
-
};
|
|
109
|
-
} & {
|
|
110
|
-
_: {
|
|
111
|
-
fieldName: "cursor";
|
|
112
|
-
};
|
|
113
|
-
};
|
|
114
105
|
migrationId: ConvexTextBuilderInitial<""> & {
|
|
115
106
|
_: {
|
|
116
107
|
notNull: true;
|
|
@@ -168,6 +159,15 @@ declare const migrationStorageTables: {
|
|
|
168
159
|
fieldName: "runId";
|
|
169
160
|
};
|
|
170
161
|
};
|
|
162
|
+
cursor: ConvexTextBuilderInitial<""> & {
|
|
163
|
+
_: {
|
|
164
|
+
tableName: "migration_state";
|
|
165
|
+
};
|
|
166
|
+
} & {
|
|
167
|
+
_: {
|
|
168
|
+
fieldName: "cursor";
|
|
169
|
+
};
|
|
170
|
+
};
|
|
171
171
|
processed: ConvexNumberBuilderInitial<""> & {
|
|
172
172
|
_: {
|
|
173
173
|
notNull: true;
|
|
@@ -1008,7 +1008,7 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
|
|
|
1008
1008
|
readonly aggregate_bucket: ConvexTableWithColumns<{
|
|
1009
1009
|
name: "aggregate_bucket";
|
|
1010
1010
|
columns: {
|
|
1011
|
-
|
|
1011
|
+
updatedAt: ConvexNumberBuilderInitial<""> & {
|
|
1012
1012
|
_: {
|
|
1013
1013
|
notNull: true;
|
|
1014
1014
|
};
|
|
@@ -1018,10 +1018,10 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
|
|
|
1018
1018
|
};
|
|
1019
1019
|
} & {
|
|
1020
1020
|
_: {
|
|
1021
|
-
fieldName: "
|
|
1021
|
+
fieldName: "updatedAt";
|
|
1022
1022
|
};
|
|
1023
1023
|
};
|
|
1024
|
-
|
|
1024
|
+
indexName: ConvexTextBuilderInitial<""> & {
|
|
1025
1025
|
_: {
|
|
1026
1026
|
notNull: true;
|
|
1027
1027
|
};
|
|
@@ -1031,10 +1031,10 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
|
|
|
1031
1031
|
};
|
|
1032
1032
|
} & {
|
|
1033
1033
|
_: {
|
|
1034
|
-
fieldName: "
|
|
1034
|
+
fieldName: "indexName";
|
|
1035
1035
|
};
|
|
1036
1036
|
};
|
|
1037
|
-
|
|
1037
|
+
tableKey: ConvexTextBuilderInitial<""> & {
|
|
1038
1038
|
_: {
|
|
1039
1039
|
notNull: true;
|
|
1040
1040
|
};
|
|
@@ -1044,10 +1044,10 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
|
|
|
1044
1044
|
};
|
|
1045
1045
|
} & {
|
|
1046
1046
|
_: {
|
|
1047
|
-
fieldName: "
|
|
1047
|
+
fieldName: "tableKey";
|
|
1048
1048
|
};
|
|
1049
1049
|
};
|
|
1050
|
-
|
|
1050
|
+
count: ConvexNumberBuilderInitial<""> & {
|
|
1051
1051
|
_: {
|
|
1052
1052
|
notNull: true;
|
|
1053
1053
|
};
|
|
@@ -1057,7 +1057,7 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
|
|
|
1057
1057
|
};
|
|
1058
1058
|
} & {
|
|
1059
1059
|
_: {
|
|
1060
|
-
fieldName: "
|
|
1060
|
+
fieldName: "count";
|
|
1061
1061
|
};
|
|
1062
1062
|
};
|
|
1063
1063
|
keyHash: ConvexTextBuilderInitial<""> & {
|
|
@@ -1323,7 +1323,7 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
|
|
|
1323
1323
|
readonly aggregate_extrema: ConvexTableWithColumns<{
|
|
1324
1324
|
name: "aggregate_extrema";
|
|
1325
1325
|
columns: {
|
|
1326
|
-
|
|
1326
|
+
updatedAt: ConvexNumberBuilderInitial<""> & {
|
|
1327
1327
|
_: {
|
|
1328
1328
|
notNull: true;
|
|
1329
1329
|
};
|
|
@@ -1333,10 +1333,10 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
|
|
|
1333
1333
|
};
|
|
1334
1334
|
} & {
|
|
1335
1335
|
_: {
|
|
1336
|
-
fieldName: "
|
|
1336
|
+
fieldName: "updatedAt";
|
|
1337
1337
|
};
|
|
1338
1338
|
};
|
|
1339
|
-
|
|
1339
|
+
indexName: ConvexTextBuilderInitial<""> & {
|
|
1340
1340
|
_: {
|
|
1341
1341
|
notNull: true;
|
|
1342
1342
|
};
|
|
@@ -1346,14 +1346,10 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
|
|
|
1346
1346
|
};
|
|
1347
1347
|
} & {
|
|
1348
1348
|
_: {
|
|
1349
|
-
fieldName: "
|
|
1349
|
+
fieldName: "indexName";
|
|
1350
1350
|
};
|
|
1351
1351
|
};
|
|
1352
|
-
|
|
1353
|
-
_: {
|
|
1354
|
-
$type: convex_values0.Value;
|
|
1355
|
-
};
|
|
1356
|
-
} & {
|
|
1352
|
+
tableKey: ConvexTextBuilderInitial<""> & {
|
|
1357
1353
|
_: {
|
|
1358
1354
|
notNull: true;
|
|
1359
1355
|
};
|
|
@@ -1363,10 +1359,14 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
|
|
|
1363
1359
|
};
|
|
1364
1360
|
} & {
|
|
1365
1361
|
_: {
|
|
1366
|
-
fieldName: "
|
|
1362
|
+
fieldName: "tableKey";
|
|
1367
1363
|
};
|
|
1368
1364
|
};
|
|
1369
|
-
|
|
1365
|
+
value: ConvexCustomBuilderInitial<"", convex_values0.VAny<any, "required", string>> & {
|
|
1366
|
+
_: {
|
|
1367
|
+
$type: convex_values0.Value;
|
|
1368
|
+
};
|
|
1369
|
+
} & {
|
|
1370
1370
|
_: {
|
|
1371
1371
|
notNull: true;
|
|
1372
1372
|
};
|
|
@@ -1376,10 +1376,10 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
|
|
|
1376
1376
|
};
|
|
1377
1377
|
} & {
|
|
1378
1378
|
_: {
|
|
1379
|
-
fieldName: "
|
|
1379
|
+
fieldName: "value";
|
|
1380
1380
|
};
|
|
1381
1381
|
};
|
|
1382
|
-
|
|
1382
|
+
count: ConvexNumberBuilderInitial<""> & {
|
|
1383
1383
|
_: {
|
|
1384
1384
|
notNull: true;
|
|
1385
1385
|
};
|
|
@@ -1389,7 +1389,7 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
|
|
|
1389
1389
|
};
|
|
1390
1390
|
} & {
|
|
1391
1391
|
_: {
|
|
1392
|
-
fieldName: "
|
|
1392
|
+
fieldName: "count";
|
|
1393
1393
|
};
|
|
1394
1394
|
};
|
|
1395
1395
|
keyHash: ConvexTextBuilderInitial<""> & {
|
|
@@ -1744,15 +1744,6 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
|
|
|
1744
1744
|
fieldName: "status";
|
|
1745
1745
|
};
|
|
1746
1746
|
};
|
|
1747
|
-
cursor: ConvexTextBuilderInitial<""> & {
|
|
1748
|
-
_: {
|
|
1749
|
-
tableName: "migration_state";
|
|
1750
|
-
};
|
|
1751
|
-
} & {
|
|
1752
|
-
_: {
|
|
1753
|
-
fieldName: "cursor";
|
|
1754
|
-
};
|
|
1755
|
-
};
|
|
1756
1747
|
migrationId: ConvexTextBuilderInitial<""> & {
|
|
1757
1748
|
_: {
|
|
1758
1749
|
notNull: true;
|
|
@@ -1810,6 +1801,15 @@ declare const BUILTIN_SCHEMA_EXTENSIONS: readonly [SchemaExtension<{
|
|
|
1810
1801
|
fieldName: "runId";
|
|
1811
1802
|
};
|
|
1812
1803
|
};
|
|
1804
|
+
cursor: ConvexTextBuilderInitial<""> & {
|
|
1805
|
+
_: {
|
|
1806
|
+
tableName: "migration_state";
|
|
1807
|
+
};
|
|
1808
|
+
} & {
|
|
1809
|
+
_: {
|
|
1810
|
+
fieldName: "cursor";
|
|
1811
|
+
};
|
|
1812
|
+
};
|
|
1813
1813
|
processed: ConvexNumberBuilderInitial<""> & {
|
|
1814
1814
|
_: {
|
|
1815
1815
|
notNull: true;
|
package/package.json
CHANGED
|
@@ -141,6 +141,7 @@ bunx kitcn add resend
|
|
|
141
141
|
- `convex/functions/schema.ts`
|
|
142
142
|
- `convex/functions/http.ts`
|
|
143
143
|
- `convex/functions/generated/server.ts`
|
|
144
|
+
- `convex/functions/generated/procedure-names.gen.ts`
|
|
144
145
|
- `convex/lib/crpc.ts`
|
|
145
146
|
- `convex/lib/get-env.ts`
|
|
146
147
|
- `convex/shared/api.ts`
|
|
@@ -218,6 +218,15 @@ This generates:
|
|
|
218
218
|
- `convex/functions/generated/` directory
|
|
219
219
|
- `convex/shared/api.ts`
|
|
220
220
|
|
|
221
|
+
Everything under `convex/functions/generated/` is codegen-owned. Never edit it,
|
|
222
|
+
and never hand-repair it. `convex/functions/generated/server.ts` is rewritten
|
|
223
|
+
from the schema before codegen reads any app module.
|
|
224
|
+
|
|
225
|
+
`convex/functions/generated/procedure-names.gen.ts` holds the procedure-name
|
|
226
|
+
lookup. It is the only generated output that depends on scanning procedures, so
|
|
227
|
+
only default-scope runs rebuild it; `kitcn codegen --scope auth|orm` preserves
|
|
228
|
+
the recorded lookup.
|
|
229
|
+
|
|
221
230
|
Agent command policy:
|
|
222
231
|
|
|
223
232
|
1. Default to `bunx kitcn dev`.
|