@convex-dev/better-auth 0.8.1 → 0.8.3

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 (47) hide show
  1. package/dist/commonjs/client/adapterUtils.d.ts +6 -6
  2. package/dist/commonjs/client/createSchema.d.ts.map +1 -1
  3. package/dist/commonjs/client/createSchema.js +11 -1
  4. package/dist/commonjs/client/createSchema.js.map +1 -1
  5. package/dist/commonjs/client/createSchemaInternal.d.ts +24 -0
  6. package/dist/commonjs/client/createSchemaInternal.d.ts.map +1 -0
  7. package/dist/commonjs/client/createSchemaInternal.js +105 -0
  8. package/dist/commonjs/client/createSchemaInternal.js.map +1 -0
  9. package/dist/commonjs/client/index.d.ts +3066 -16
  10. package/dist/commonjs/client/index.d.ts.map +1 -1
  11. package/dist/commonjs/client/index.js +8 -5
  12. package/dist/commonjs/client/index.js.map +1 -1
  13. package/dist/commonjs/component/adapter.d.ts +6 -6
  14. package/dist/commonjs/nextjs/index.d.ts +3 -1
  15. package/dist/commonjs/nextjs/index.d.ts.map +1 -1
  16. package/dist/commonjs/nextjs/index.js +2 -2
  17. package/dist/commonjs/nextjs/index.js.map +1 -1
  18. package/dist/commonjs/react-start/index.d.ts +3 -1
  19. package/dist/commonjs/react-start/index.d.ts.map +1 -1
  20. package/dist/commonjs/react-start/index.js +2 -1
  21. package/dist/commonjs/react-start/index.js.map +1 -1
  22. package/dist/esm/client/adapterUtils.d.ts +6 -6
  23. package/dist/esm/client/createSchema.d.ts.map +1 -1
  24. package/dist/esm/client/createSchema.js +11 -1
  25. package/dist/esm/client/createSchema.js.map +1 -1
  26. package/dist/esm/client/createSchemaInternal.d.ts +24 -0
  27. package/dist/esm/client/createSchemaInternal.d.ts.map +1 -0
  28. package/dist/esm/client/createSchemaInternal.js +105 -0
  29. package/dist/esm/client/createSchemaInternal.js.map +1 -0
  30. package/dist/esm/client/index.d.ts +3066 -16
  31. package/dist/esm/client/index.d.ts.map +1 -1
  32. package/dist/esm/client/index.js +8 -5
  33. package/dist/esm/client/index.js.map +1 -1
  34. package/dist/esm/component/adapter.d.ts +6 -6
  35. package/dist/esm/nextjs/index.d.ts +3 -1
  36. package/dist/esm/nextjs/index.d.ts.map +1 -1
  37. package/dist/esm/nextjs/index.js +2 -2
  38. package/dist/esm/nextjs/index.js.map +1 -1
  39. package/dist/esm/react-start/index.d.ts +3 -1
  40. package/dist/esm/react-start/index.d.ts.map +1 -1
  41. package/dist/esm/react-start/index.js +2 -1
  42. package/dist/esm/react-start/index.js.map +1 -1
  43. package/package.json +1 -1
  44. package/src/client/createSchema.ts +13 -1
  45. package/src/client/index.ts +22 -9
  46. package/src/nextjs/index.ts +6 -3
  47. package/src/react-start/index.ts +6 -2
@@ -2,20 +2,20 @@ import { Infer } from "convex/values";
2
2
  import { DocumentByName, GenericDataModel, GenericQueryCtx, PaginationOptions, PaginationResult, SchemaDefinition, TableNamesInDataModel } from "convex/server";
3
3
  import { BetterAuthDbSchema } from "better-auth/db";
4
4
  export declare const adapterWhereValidator: import("convex/values").VObject<{
5
- operator?: "in" | "lt" | "lte" | "gt" | "gte" | "eq" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
5
+ operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
6
6
  connector?: "AND" | "OR" | undefined;
7
7
  value: string | number | boolean | string[] | number[] | null;
8
8
  field: string;
9
9
  }, {
10
10
  field: import("convex/values").VString<string, "required">;
11
- operator: import("convex/values").VUnion<"in" | "lt" | "lte" | "gt" | "gte" | "eq" | "ne" | "contains" | "starts_with" | "ends_with" | undefined, [import("convex/values").VLiteral<"lt", "required">, import("convex/values").VLiteral<"lte", "required">, import("convex/values").VLiteral<"gt", "required">, import("convex/values").VLiteral<"gte", "required">, import("convex/values").VLiteral<"eq", "required">, import("convex/values").VLiteral<"in", "required">, import("convex/values").VLiteral<"ne", "required">, import("convex/values").VLiteral<"contains", "required">, import("convex/values").VLiteral<"starts_with", "required">, import("convex/values").VLiteral<"ends_with", "required">], "optional", never>;
11
+ operator: import("convex/values").VUnion<"lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined, [import("convex/values").VLiteral<"lt", "required">, import("convex/values").VLiteral<"lte", "required">, import("convex/values").VLiteral<"gt", "required">, import("convex/values").VLiteral<"gte", "required">, import("convex/values").VLiteral<"eq", "required">, import("convex/values").VLiteral<"in", "required">, import("convex/values").VLiteral<"ne", "required">, import("convex/values").VLiteral<"contains", "required">, import("convex/values").VLiteral<"starts_with", "required">, import("convex/values").VLiteral<"ends_with", "required">], "optional", never>;
12
12
  value: import("convex/values").VUnion<string | number | boolean | string[] | number[] | null, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">, import("convex/values").VArray<string[], import("convex/values").VString<string, "required">, "required">, import("convex/values").VArray<number[], import("convex/values").VFloat64<number, "required">, "required">, import("convex/values").VNull<null, "required">], "required", never>;
13
13
  connector: import("convex/values").VUnion<"AND" | "OR" | undefined, [import("convex/values").VLiteral<"AND", "required">, import("convex/values").VLiteral<"OR", "required">], "optional", never>;
14
14
  }, "required", "value" | "field" | "operator" | "connector">;
15
15
  export declare const adapterArgsValidator: import("convex/values").VObject<{
16
16
  select?: string[] | undefined;
17
17
  where?: {
18
- operator?: "in" | "lt" | "lte" | "gt" | "gte" | "eq" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
18
+ operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
19
19
  connector?: "AND" | "OR" | undefined;
20
20
  value: string | number | boolean | string[] | number[] | null;
21
21
  field: string;
@@ -30,18 +30,18 @@ export declare const adapterArgsValidator: import("convex/values").VObject<{
30
30
  }, {
31
31
  model: import("convex/values").VString<string, "required">;
32
32
  where: import("convex/values").VArray<{
33
- operator?: "in" | "lt" | "lte" | "gt" | "gte" | "eq" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
33
+ operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
34
34
  connector?: "AND" | "OR" | undefined;
35
35
  value: string | number | boolean | string[] | number[] | null;
36
36
  field: string;
37
37
  }[] | undefined, import("convex/values").VObject<{
38
- operator?: "in" | "lt" | "lte" | "gt" | "gte" | "eq" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
38
+ operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined;
39
39
  connector?: "AND" | "OR" | undefined;
40
40
  value: string | number | boolean | string[] | number[] | null;
41
41
  field: string;
42
42
  }, {
43
43
  field: import("convex/values").VString<string, "required">;
44
- operator: import("convex/values").VUnion<"in" | "lt" | "lte" | "gt" | "gte" | "eq" | "ne" | "contains" | "starts_with" | "ends_with" | undefined, [import("convex/values").VLiteral<"lt", "required">, import("convex/values").VLiteral<"lte", "required">, import("convex/values").VLiteral<"gt", "required">, import("convex/values").VLiteral<"gte", "required">, import("convex/values").VLiteral<"eq", "required">, import("convex/values").VLiteral<"in", "required">, import("convex/values").VLiteral<"ne", "required">, import("convex/values").VLiteral<"contains", "required">, import("convex/values").VLiteral<"starts_with", "required">, import("convex/values").VLiteral<"ends_with", "required">], "optional", never>;
44
+ operator: import("convex/values").VUnion<"lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined, [import("convex/values").VLiteral<"lt", "required">, import("convex/values").VLiteral<"lte", "required">, import("convex/values").VLiteral<"gt", "required">, import("convex/values").VLiteral<"gte", "required">, import("convex/values").VLiteral<"eq", "required">, import("convex/values").VLiteral<"in", "required">, import("convex/values").VLiteral<"ne", "required">, import("convex/values").VLiteral<"contains", "required">, import("convex/values").VLiteral<"starts_with", "required">, import("convex/values").VLiteral<"ends_with", "required">], "optional", never>;
45
45
  value: import("convex/values").VUnion<string | number | boolean | string[] | number[] | null, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">, import("convex/values").VArray<string[], import("convex/values").VString<string, "required">, "required">, import("convex/values").VArray<number[], import("convex/values").VFloat64<number, "required">, "required">, import("convex/values").VNull<null, "required">], "required", never>;
46
46
  connector: import("convex/values").VUnion<"AND" | "OR" | undefined, [import("convex/values").VLiteral<"AND", "required">, import("convex/values").VLiteral<"OR", "required">], "optional", never>;
47
47
  }, "required", "value" | "field" | "operator" | "connector">, "optional">;
@@ -1 +1 @@
1
- {"version":3,"file":"createSchema.d.ts","sourceRoot":"","sources":["../../../src/client/createSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAuB,MAAM,gBAAgB,CAAC;AAIzE,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAgBvB,CAAC;AA6CF,eAAO,MAAM,YAAY,GAAU,mBAGhC;IACD,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;;;;EA6EA,CAAC"}
1
+ {"version":3,"file":"createSchema.d.ts","sourceRoot":"","sources":["../../../src/client/createSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAuB,MAAM,gBAAgB,CAAC;AAIzE,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAgBvB,CAAC;AA6CF,eAAO,MAAM,YAAY,GAAU,mBAGhC;IACD,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;;;;EAyFA,CAAC"}
@@ -40,7 +40,17 @@ const mergedIndexFields = (tables) => Object.fromEntries(Object.entries(tables).
40
40
  return [key, manualIndexes.concat(specialFieldIndexes)];
41
41
  }));
42
42
  export const createSchema = async ({ file, tables, }) => {
43
- process.env.IS_GENERATING_SCHEMA = "1";
43
+ // stop convex esbuild from throwing over this import, only runs
44
+ // in the better auth cli
45
+ const pathImport = "path";
46
+ const path = await import(pathImport);
47
+ const baseName = path.basename(path.resolve(process.cwd(), file ?? ""));
48
+ // if the target directory is named "convex", they're almost definitely
49
+ // generating the schema in the wrong directory, likely would replace the
50
+ // app schema
51
+ if (baseName === "convex") {
52
+ throw new Error("Better Auth schema must be generated in the Better Auth component directory.");
53
+ }
44
54
  let code = `// This file is auto-generated. Do not edit this file manually.
45
55
  // To regenerate the schema, run:
46
56
  // \`npx @better-auth/cli generate --output ${file} -y\`
@@ -1 +1 @@
1
- {"version":3,"file":"createSchema.js","sourceRoot":"","sources":["../../../src/client/createSchema.ts"],"names":[],"mappings":"AAEA,yDAAyD;AACzD,mEAAmE;AACnE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC7E,SAAS,EAAE,CAAC,KAAK,CAAC;IAClB,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/C,YAAY,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC;IAC3C,OAAO,EAAE,CAAC,cAAc,CAAC;IACzB,MAAM,EAAE,CAAC,KAAK,CAAC;IACf,MAAM,EAAE,CAAC,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACtC,UAAU,EAAE;QACV,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC;QACrC,CAAC,gBAAgB,EAAE,QAAQ,CAAC;KAC7B;IACD,YAAY,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACtC,WAAW,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC;IACzC,YAAY,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,aAAa,CAAC;CAC1E,CAAC;AAEF,uDAAuD;AACvD,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,EAAE,CACnD,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;KACnB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;IACpB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QAC1B,QAAQ;QACR;YACE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D;KACF,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CACxB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CACjE,CACJ,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,CAAC,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CACxB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CACjE,CACJ,CAAC;AAEJ,MAAM,iBAAiB,GAAG,CAAC,MAA0B,EAAE,EAAE,CACvD,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;IACnC,MAAM,aAAa,GAAG,WAAW,CAAC,GAA+B,CAAC,IAAI,EAAE,CAAC;IACzE,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CACrC,aAAa,CAAC,MAAM,CAAC,CAAC,GAA6C,CAAC;QAClE,EAAE,CACL,CAAC,MAAM,CACN,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACxB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAChD,CACJ,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,CACH,CAAC;AAEJ,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,EACjC,IAAI,EACJ,MAAM,GAIP,EAAE,EAAE;IACH,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,GAAG,CAAC;IACvC,IAAI,IAAI,GAAW;;8CAEyB,IAAI;;;;;;CAMjD,CAAC;IAEA,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAE,CAAC;QAChC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAElC,gCAAgC;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAC7D,CAAC;QAEF,SAAS,OAAO,CAAC,IAAY,EAAE,KAAqB;YAClD,MAAM,IAAI,GAAG,KAAK,CAAC,IAKW,CAAC;YAE/B,MAAM,OAAO,GAAgC;gBAC3C,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,aAAa;gBACtB,MAAM,EAAE,YAAY;gBACpB,IAAI,EAAE,YAAY;gBAClB,UAAU,EAAE,qBAAqB;gBACjC,UAAU,EAAE,qBAAqB;aACzB,CAAC;YACX,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,OAAO,GACX,iBAAiB,CAAC,MAAM,CAAC,CACvB,SAA2C,CAC5C,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACjE,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,OAAO,WAAW,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;QACjE,CAAC,CAAC,IAAI,EAAE,CAAC;QAEX,MAAM,MAAM,GAAG,GAAG,SAAS;EAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aAClB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,IAAsB,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,CAAC,WAAmB,EAAE,EAAE,CACvC,IAAI,CAAC,QAAQ;gBACX,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,gCAAgC,WAAW,IAAI,CAAC;YACtD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5C,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC;MACP,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QACnE,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;;;;;CAKT,CAAC;IAEA,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,IAAI,IAAI,aAAa;QAC3B,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"createSchema.js","sourceRoot":"","sources":["../../../src/client/createSchema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { BetterAuthDbSchema } from "better-auth/db";
2
+ export declare const indexFields: {
3
+ account: (string | string[])[];
4
+ rateLimit: string[];
5
+ session: (string | string[])[];
6
+ verification: string[];
7
+ user: (string | string[])[];
8
+ passkey: string[];
9
+ apikey: string[];
10
+ member: string[][];
11
+ invitation: string[][];
12
+ oauthConsent: string[][];
13
+ ssoProvider: string[];
14
+ subscription: string[];
15
+ };
16
+ export declare const createSchema: ({ file, tables, }: {
17
+ tables: BetterAuthDbSchema;
18
+ file?: string;
19
+ }) => Promise<{
20
+ code: string;
21
+ path: string;
22
+ overwrite: boolean;
23
+ }>;
24
+ //# sourceMappingURL=createSchemaInternal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSchemaInternal.d.ts","sourceRoot":"","sources":["../../../src/client/createSchemaInternal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAuB,MAAM,gBAAgB,CAAC;AAIzE,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAgBvB,CAAC;AA6CF,eAAO,MAAM,YAAY,GAAU,mBAGhC;IACD,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;;;;EAmFA,CAAC"}
@@ -0,0 +1,105 @@
1
+ // Manually add fields to index on for schema generation,
2
+ // all fields in the schema specialFields are automatically indexed
3
+ export const indexFields = {
4
+ account: ["accountId", ["accountId", "providerId"], ["providerId", "userId"]],
5
+ rateLimit: ["key"],
6
+ session: ["expiresAt", ["expiresAt", "userId"]],
7
+ verification: ["expiresAt", "identifier"],
8
+ user: [["email", "name"], "name", "userId"],
9
+ passkey: ["credentialID"],
10
+ apikey: ["key"],
11
+ member: [["organizationId", "userId"]],
12
+ invitation: [
13
+ ["email", "organizationId", "status"],
14
+ ["organizationId", "status"],
15
+ ],
16
+ oauthConsent: [["clientId", "userId"]],
17
+ ssoProvider: ["organizationId", "domain"],
18
+ subscription: ["stripeSubscriptionId", "stripeCustomerId", "referenceId"],
19
+ };
20
+ // Return map of unique, sortable, and reference fields
21
+ const specialFields = (tables) => Object.fromEntries(Object.entries(tables)
22
+ .map(([key, table]) => {
23
+ const fields = Object.fromEntries(Object.entries(table.fields)
24
+ .map(([fieldKey, field]) => [
25
+ fieldKey,
26
+ {
27
+ ...(field.sortable ? { sortable: true } : {}),
28
+ ...(field.unique ? { unique: true } : {}),
29
+ ...(field.references ? { references: field.references } : {}),
30
+ },
31
+ ])
32
+ .filter(([_key, value]) => typeof value === "object" ? Object.keys(value).length > 0 : true));
33
+ return [key, fields];
34
+ })
35
+ .filter(([_key, value]) => typeof value === "object" ? Object.keys(value).length > 0 : true));
36
+ const mergedIndexFields = (tables) => Object.fromEntries(Object.entries(tables).map(([key]) => {
37
+ const manualIndexes = indexFields[key] || [];
38
+ const specialFieldIndexes = Object.keys(specialFields(tables)[key] ||
39
+ {}).filter((index) => !manualIndexes.some((m) => Array.isArray(m) ? m[0] === index : m === index));
40
+ return [key, manualIndexes.concat(specialFieldIndexes)];
41
+ }));
42
+ export const createSchema = async ({ file, tables, }) => {
43
+ const path = await import("path");
44
+ const baseName = path.basename(process.cwd());
45
+ if (baseName === "convex") {
46
+ throw new Error("Better Auth schema must be generated in the Better Auth component directory.");
47
+ }
48
+ let code = `// This file is auto-generated. Do not edit this file manually.
49
+ // To regenerate the schema, run:
50
+ // \`npx @better-auth/cli generate --output ${file} -y\`
51
+
52
+ import { defineSchema, defineTable } from "convex/server";
53
+ import { v } from "convex/values";
54
+
55
+ export const tables = {
56
+ `;
57
+ for (const tableKey in tables) {
58
+ const table = tables[tableKey];
59
+ const modelName = table.modelName;
60
+ // No id fields in Convex schema
61
+ const fields = Object.fromEntries(Object.entries(table.fields).filter(([key]) => key !== "id"));
62
+ function getType(name, field) {
63
+ const type = field.type;
64
+ const typeMap = {
65
+ string: `v.string()`,
66
+ boolean: `v.boolean()`,
67
+ number: `v.number()`,
68
+ date: `v.number()`,
69
+ "number[]": `v.array(v.number())`,
70
+ "string[]": `v.array(v.string())`,
71
+ };
72
+ return typeMap[type];
73
+ }
74
+ const indexes = mergedIndexFields(tables)[modelName]?.map((index) => {
75
+ const indexArray = Array.isArray(index) ? index.sort() : [index];
76
+ const indexName = indexArray.join("_");
77
+ return `.index("${indexName}", ${JSON.stringify(indexArray)})`;
78
+ }) || [];
79
+ const schema = `${modelName}: defineTable({
80
+ ${Object.keys(fields)
81
+ .map((field) => {
82
+ const attr = fields[field];
83
+ const type = getType(field, attr);
84
+ const optional = (fieldSchema) => attr.required
85
+ ? fieldSchema
86
+ : `v.optional(v.union(v.null(), ${fieldSchema}))`;
87
+ return ` ${field}: ${optional(type)},`;
88
+ })
89
+ .join("\n")}
90
+ })${indexes.length > 0 ? `\n ${indexes.join("\n ")}` : ""},\n`;
91
+ code += ` ${schema}`;
92
+ }
93
+ code += `};
94
+
95
+ const schema = defineSchema(tables);
96
+
97
+ export default schema;
98
+ `;
99
+ return {
100
+ code,
101
+ path: file ?? "./schema.ts",
102
+ overwrite: true,
103
+ };
104
+ };
105
+ //# sourceMappingURL=createSchemaInternal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSchemaInternal.js","sourceRoot":"","sources":["../../../src/client/createSchemaInternal.ts"],"names":[],"mappings":"AAEA,yDAAyD;AACzD,mEAAmE;AACnE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC7E,SAAS,EAAE,CAAC,KAAK,CAAC;IAClB,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/C,YAAY,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC;IAC3C,OAAO,EAAE,CAAC,cAAc,CAAC;IACzB,MAAM,EAAE,CAAC,KAAK,CAAC;IACf,MAAM,EAAE,CAAC,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACtC,UAAU,EAAE;QACV,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC;QACrC,CAAC,gBAAgB,EAAE,QAAQ,CAAC;KAC7B;IACD,YAAY,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACtC,WAAW,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC;IACzC,YAAY,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,aAAa,CAAC;CAC1E,CAAC;AAEF,uDAAuD;AACvD,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,EAAE,CACnD,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;KACnB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;IACpB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QAC1B,QAAQ;QACR;YACE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D;KACF,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CACxB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CACjE,CACJ,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,CAAC,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CACxB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CACjE,CACJ,CAAC;AAEJ,MAAM,iBAAiB,GAAG,CAAC,MAA0B,EAAE,EAAE,CACvD,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;IACnC,MAAM,aAAa,GAAG,WAAW,CAAC,GAA+B,CAAC,IAAI,EAAE,CAAC;IACzE,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CACrC,aAAa,CAAC,MAAM,CAAC,CAAC,GAA6C,CAAC;QAClE,EAAE,CACL,CAAC,MAAM,CACN,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACxB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAChD,CACJ,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,CACH,CAAC;AAEJ,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,EACjC,IAAI,EACJ,MAAM,GAIP,EAAE,EAAE;IACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,GAAW;;8CAEyB,IAAI;;;;;;CAMjD,CAAC;IAEA,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAE,CAAC;QAChC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAElC,gCAAgC;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAC7D,CAAC;QAEF,SAAS,OAAO,CAAC,IAAY,EAAE,KAAqB;YAClD,MAAM,IAAI,GAAG,KAAK,CAAC,IAKW,CAAC;YAE/B,MAAM,OAAO,GAAgC;gBAC3C,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,aAAa;gBACtB,MAAM,EAAE,YAAY;gBACpB,IAAI,EAAE,YAAY;gBAClB,UAAU,EAAE,qBAAqB;gBACjC,UAAU,EAAE,qBAAqB;aACzB,CAAC;YACX,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,OAAO,GACX,iBAAiB,CAAC,MAAM,CAAC,CACvB,SAA2C,CAC5C,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACjE,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,OAAO,WAAW,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;QACjE,CAAC,CAAC,IAAI,EAAE,CAAC;QAEX,MAAM,MAAM,GAAG,GAAG,SAAS;EAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aAClB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,IAAsB,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,CAAC,WAAmB,EAAE,EAAE,CACvC,IAAI,CAAC,QAAQ;gBACX,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,gCAAgC,WAAW,IAAI,CAAC;YACtD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5C,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC;MACP,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QACnE,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;;;;;CAKT,CAAC;IAEA,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,IAAI,IAAI,aAAa;QAC3B,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC,CAAC"}