create-fate 1.7.5 → 1.7.7

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 (191) hide show
  1. package/bin/create-fate.mjs +0 -1
  2. package/package.json +1 -1
  3. package/templates/fate/_shared/vue-app/package.json +3 -3
  4. package/templates/fate/_shared/vue-app/pages/index.vue +1 -1
  5. package/templates/fate/_shared/vue-app/src/ui/Header.vue +3 -1
  6. package/templates/fate/drizzle/README.md +1 -1
  7. package/templates/fate/drizzle/client/package.json +3 -3
  8. package/templates/fate/drizzle/client/pages/index.tsx +1 -1
  9. package/templates/fate/drizzle/client/src/ui/Button.tsx +2 -4
  10. package/templates/fate/drizzle/client/src/ui/Header.tsx +1 -1
  11. package/templates/fate/drizzle/package.json +1 -1
  12. package/templates/fate/drizzle/pnpm-workspace.yaml +1 -1
  13. package/templates/fate/drizzle/server/package.json +2 -2
  14. package/templates/fate/drizzle/server/src/drizzle/schema.ts +18 -2
  15. package/templates/fate/graphql/README.md +1 -1
  16. package/templates/fate/graphql/client/package.json +3 -3
  17. package/templates/fate/graphql/client/pages/index.tsx +1 -1
  18. package/templates/fate/graphql/client/src/ui/Button.tsx +2 -4
  19. package/templates/fate/graphql/client/src/ui/Header.tsx +1 -1
  20. package/templates/fate/graphql/package.json +1 -1
  21. package/templates/fate/graphql/pnpm-workspace.yaml +1 -1
  22. package/templates/fate/graphql/server/package.json +1 -1
  23. package/templates/fate/graphql/server/src/prisma/schema.prisma +23 -11
  24. package/templates/fate/graphql-client/README.md +1 -1
  25. package/templates/fate/graphql-client/package.json +3 -3
  26. package/templates/fate/graphql-client/pnpm-workspace.yaml +1 -1
  27. package/templates/fate/http/README.md +1 -1
  28. package/templates/fate/http/client/package.json +3 -3
  29. package/templates/fate/http/client/pages/index.tsx +1 -1
  30. package/templates/fate/http/client/src/ui/Button.tsx +2 -4
  31. package/templates/fate/http/client/src/ui/Header.tsx +1 -1
  32. package/templates/fate/http/package.json +1 -1
  33. package/templates/fate/http/pnpm-workspace.yaml +1 -1
  34. package/templates/fate/http/server/package.json +2 -2
  35. package/templates/fate/http/server/src/drizzle/schema.ts +18 -2
  36. package/templates/fate/prisma/README.md +1 -1
  37. package/templates/fate/prisma/client/package.json +3 -3
  38. package/templates/fate/prisma/client/pages/index.tsx +1 -1
  39. package/templates/fate/prisma/client/src/ui/Button.tsx +2 -4
  40. package/templates/fate/prisma/client/src/ui/Header.tsx +1 -1
  41. package/templates/fate/prisma/package.json +1 -1
  42. package/templates/fate/prisma/pnpm-workspace.yaml +1 -1
  43. package/templates/fate/prisma/server/package.json +1 -1
  44. package/templates/fate/prisma/server/src/prisma/schema.prisma +23 -11
  45. package/templates/fate/void/package.json +4 -4
  46. package/templates/fate/void/pages/index.tsx +1 -1
  47. package/templates/fate/void/pnpm-workspace.yaml +1 -1
  48. package/templates/fate/void/src/ui/Button.tsx +2 -4
  49. package/templates/fate/void/src/ui/Header.tsx +1 -1
  50. package/templates/fate/drizzle/client/node_modules/.bin/browserslist +0 -22
  51. package/templates/fate/drizzle/client/node_modules/.bin/cf-wrangler +0 -22
  52. package/templates/fate/drizzle/client/node_modules/.bin/drizzle-kit +0 -22
  53. package/templates/fate/drizzle/client/node_modules/.bin/esbuild +0 -22
  54. package/templates/fate/drizzle/client/node_modules/.bin/fate +0 -22
  55. package/templates/fate/drizzle/client/node_modules/.bin/fbtee +0 -22
  56. package/templates/fate/drizzle/client/node_modules/.bin/intent +0 -22
  57. package/templates/fate/drizzle/client/node_modules/.bin/jiti +0 -22
  58. package/templates/fate/drizzle/client/node_modules/.bin/oxfmt +0 -22
  59. package/templates/fate/drizzle/client/node_modules/.bin/oxlint +0 -22
  60. package/templates/fate/drizzle/client/node_modules/.bin/rolldown +0 -22
  61. package/templates/fate/drizzle/client/node_modules/.bin/tsc +0 -22
  62. package/templates/fate/drizzle/client/node_modules/.bin/tsx +0 -22
  63. package/templates/fate/drizzle/client/node_modules/.bin/vitest +0 -22
  64. package/templates/fate/drizzle/client/node_modules/.bin/void +0 -22
  65. package/templates/fate/drizzle/client/node_modules/.bin/vp +0 -22
  66. package/templates/fate/drizzle/client/node_modules/.bin/vpr +0 -22
  67. package/templates/fate/drizzle/client/node_modules/.bin/workerd +0 -22
  68. package/templates/fate/drizzle/client/node_modules/.bin/wrangler +0 -22
  69. package/templates/fate/drizzle/client/node_modules/.bin/wrangler2 +0 -22
  70. package/templates/fate/drizzle/server/node_modules/.bin/drizzle-kit +0 -22
  71. package/templates/fate/drizzle/server/node_modules/.bin/esbuild +0 -22
  72. package/templates/fate/drizzle/server/node_modules/.bin/fate +0 -22
  73. package/templates/fate/drizzle/server/node_modules/.bin/intent +0 -22
  74. package/templates/fate/drizzle/server/node_modules/.bin/jiti +0 -22
  75. package/templates/fate/drizzle/server/node_modules/.bin/nodemon +0 -22
  76. package/templates/fate/drizzle/server/node_modules/.bin/oxfmt +0 -22
  77. package/templates/fate/drizzle/server/node_modules/.bin/oxlint +0 -22
  78. package/templates/fate/drizzle/server/node_modules/.bin/tsc +0 -22
  79. package/templates/fate/drizzle/server/node_modules/.bin/tsx +0 -22
  80. package/templates/fate/drizzle/server/node_modules/.bin/vitest +0 -22
  81. package/templates/fate/drizzle/server/node_modules/.bin/vp +0 -22
  82. package/templates/fate/drizzle/server/node_modules/.bin/vpr +0 -22
  83. package/templates/fate/graphql/client/node_modules/.bin/browserslist +0 -22
  84. package/templates/fate/graphql/client/node_modules/.bin/cf-wrangler +0 -22
  85. package/templates/fate/graphql/client/node_modules/.bin/drizzle-kit +0 -22
  86. package/templates/fate/graphql/client/node_modules/.bin/esbuild +0 -22
  87. package/templates/fate/graphql/client/node_modules/.bin/fate +0 -22
  88. package/templates/fate/graphql/client/node_modules/.bin/fbtee +0 -22
  89. package/templates/fate/graphql/client/node_modules/.bin/intent +0 -22
  90. package/templates/fate/graphql/client/node_modules/.bin/jiti +0 -22
  91. package/templates/fate/graphql/client/node_modules/.bin/oxfmt +0 -22
  92. package/templates/fate/graphql/client/node_modules/.bin/oxlint +0 -22
  93. package/templates/fate/graphql/client/node_modules/.bin/rolldown +0 -22
  94. package/templates/fate/graphql/client/node_modules/.bin/tsc +0 -22
  95. package/templates/fate/graphql/client/node_modules/.bin/tsx +0 -22
  96. package/templates/fate/graphql/client/node_modules/.bin/vitest +0 -22
  97. package/templates/fate/graphql/client/node_modules/.bin/void +0 -22
  98. package/templates/fate/graphql/client/node_modules/.bin/vp +0 -22
  99. package/templates/fate/graphql/client/node_modules/.bin/vpr +0 -22
  100. package/templates/fate/graphql/client/node_modules/.bin/workerd +0 -22
  101. package/templates/fate/graphql/client/node_modules/.bin/wrangler +0 -22
  102. package/templates/fate/graphql/client/node_modules/.bin/wrangler2 +0 -22
  103. package/templates/fate/graphql/client/node_modules/.bin/yaml +0 -22
  104. package/templates/fate/graphql/server/node_modules/.bin/esbuild +0 -22
  105. package/templates/fate/graphql/server/node_modules/.bin/eslint +0 -22
  106. package/templates/fate/graphql/server/node_modules/.bin/fate +0 -22
  107. package/templates/fate/graphql/server/node_modules/.bin/intent +0 -22
  108. package/templates/fate/graphql/server/node_modules/.bin/jiti +0 -22
  109. package/templates/fate/graphql/server/node_modules/.bin/nft +0 -22
  110. package/templates/fate/graphql/server/node_modules/.bin/nodemon +0 -22
  111. package/templates/fate/graphql/server/node_modules/.bin/oxfmt +0 -22
  112. package/templates/fate/graphql/server/node_modules/.bin/oxlint +0 -22
  113. package/templates/fate/graphql/server/node_modules/.bin/prisma +0 -22
  114. package/templates/fate/graphql/server/node_modules/.bin/prisma-json-types-generator +0 -22
  115. package/templates/fate/graphql/server/node_modules/.bin/prisma-pothos-types +0 -22
  116. package/templates/fate/graphql/server/node_modules/.bin/tsc +0 -22
  117. package/templates/fate/graphql/server/node_modules/.bin/tsgolint +0 -22
  118. package/templates/fate/graphql/server/node_modules/.bin/tsx +0 -22
  119. package/templates/fate/graphql/server/node_modules/.bin/vitest +0 -22
  120. package/templates/fate/graphql/server/node_modules/.bin/vp +0 -22
  121. package/templates/fate/graphql/server/node_modules/.bin/vpr +0 -22
  122. package/templates/fate/graphql/server/node_modules/.bin/yaml +0 -22
  123. package/templates/fate/http/client/node_modules/.bin/browserslist +0 -22
  124. package/templates/fate/http/client/node_modules/.bin/cf-wrangler +0 -22
  125. package/templates/fate/http/client/node_modules/.bin/drizzle-kit +0 -22
  126. package/templates/fate/http/client/node_modules/.bin/esbuild +0 -22
  127. package/templates/fate/http/client/node_modules/.bin/fate +0 -22
  128. package/templates/fate/http/client/node_modules/.bin/fbtee +0 -22
  129. package/templates/fate/http/client/node_modules/.bin/intent +0 -22
  130. package/templates/fate/http/client/node_modules/.bin/jiti +0 -22
  131. package/templates/fate/http/client/node_modules/.bin/oxfmt +0 -22
  132. package/templates/fate/http/client/node_modules/.bin/oxlint +0 -22
  133. package/templates/fate/http/client/node_modules/.bin/rolldown +0 -22
  134. package/templates/fate/http/client/node_modules/.bin/tsc +0 -22
  135. package/templates/fate/http/client/node_modules/.bin/tsx +0 -22
  136. package/templates/fate/http/client/node_modules/.bin/vitest +0 -22
  137. package/templates/fate/http/client/node_modules/.bin/void +0 -22
  138. package/templates/fate/http/client/node_modules/.bin/vp +0 -22
  139. package/templates/fate/http/client/node_modules/.bin/vpr +0 -22
  140. package/templates/fate/http/client/node_modules/.bin/workerd +0 -22
  141. package/templates/fate/http/client/node_modules/.bin/wrangler +0 -22
  142. package/templates/fate/http/client/node_modules/.bin/wrangler2 +0 -22
  143. package/templates/fate/http/server/node_modules/.bin/drizzle-kit +0 -22
  144. package/templates/fate/http/server/node_modules/.bin/esbuild +0 -22
  145. package/templates/fate/http/server/node_modules/.bin/fate +0 -22
  146. package/templates/fate/http/server/node_modules/.bin/intent +0 -22
  147. package/templates/fate/http/server/node_modules/.bin/jiti +0 -22
  148. package/templates/fate/http/server/node_modules/.bin/nodemon +0 -22
  149. package/templates/fate/http/server/node_modules/.bin/oxfmt +0 -22
  150. package/templates/fate/http/server/node_modules/.bin/oxlint +0 -22
  151. package/templates/fate/http/server/node_modules/.bin/tsc +0 -22
  152. package/templates/fate/http/server/node_modules/.bin/tsx +0 -22
  153. package/templates/fate/http/server/node_modules/.bin/vitest +0 -22
  154. package/templates/fate/http/server/node_modules/.bin/vp +0 -22
  155. package/templates/fate/http/server/node_modules/.bin/vpr +0 -22
  156. package/templates/fate/prisma/client/node_modules/.bin/browserslist +0 -22
  157. package/templates/fate/prisma/client/node_modules/.bin/cf-wrangler +0 -22
  158. package/templates/fate/prisma/client/node_modules/.bin/drizzle-kit +0 -22
  159. package/templates/fate/prisma/client/node_modules/.bin/esbuild +0 -22
  160. package/templates/fate/prisma/client/node_modules/.bin/fate +0 -22
  161. package/templates/fate/prisma/client/node_modules/.bin/fbtee +0 -22
  162. package/templates/fate/prisma/client/node_modules/.bin/intent +0 -22
  163. package/templates/fate/prisma/client/node_modules/.bin/jiti +0 -22
  164. package/templates/fate/prisma/client/node_modules/.bin/oxfmt +0 -22
  165. package/templates/fate/prisma/client/node_modules/.bin/oxlint +0 -22
  166. package/templates/fate/prisma/client/node_modules/.bin/rolldown +0 -22
  167. package/templates/fate/prisma/client/node_modules/.bin/tsc +0 -22
  168. package/templates/fate/prisma/client/node_modules/.bin/tsx +0 -22
  169. package/templates/fate/prisma/client/node_modules/.bin/vitest +0 -22
  170. package/templates/fate/prisma/client/node_modules/.bin/void +0 -22
  171. package/templates/fate/prisma/client/node_modules/.bin/vp +0 -22
  172. package/templates/fate/prisma/client/node_modules/.bin/vpr +0 -22
  173. package/templates/fate/prisma/client/node_modules/.bin/workerd +0 -22
  174. package/templates/fate/prisma/client/node_modules/.bin/wrangler +0 -22
  175. package/templates/fate/prisma/client/node_modules/.bin/wrangler2 +0 -22
  176. package/templates/fate/prisma/client/node_modules/.bin/yaml +0 -22
  177. package/templates/fate/prisma/server/node_modules/.bin/esbuild +0 -22
  178. package/templates/fate/prisma/server/node_modules/.bin/fate +0 -22
  179. package/templates/fate/prisma/server/node_modules/.bin/intent +0 -22
  180. package/templates/fate/prisma/server/node_modules/.bin/jiti +0 -22
  181. package/templates/fate/prisma/server/node_modules/.bin/nft +0 -22
  182. package/templates/fate/prisma/server/node_modules/.bin/nodemon +0 -22
  183. package/templates/fate/prisma/server/node_modules/.bin/oxfmt +0 -22
  184. package/templates/fate/prisma/server/node_modules/.bin/oxlint +0 -22
  185. package/templates/fate/prisma/server/node_modules/.bin/prisma +0 -22
  186. package/templates/fate/prisma/server/node_modules/.bin/tsc +0 -22
  187. package/templates/fate/prisma/server/node_modules/.bin/tsx +0 -22
  188. package/templates/fate/prisma/server/node_modules/.bin/vitest +0 -22
  189. package/templates/fate/prisma/server/node_modules/.bin/vp +0 -22
  190. package/templates/fate/prisma/server/node_modules/.bin/vpr +0 -22
  191. package/templates/fate/prisma/server/node_modules/.bin/yaml +0 -22
@@ -699,7 +699,6 @@ const configureVueReadme = (targetPath, selectedVariant) => {
699
699
  `vp create fate -- --template ${selectedVariant}`,
700
700
  `vp create fate -- --template ${selectedVariant} --framework vue`,
701
701
  )
702
- .replaceAll('modern data client for React', 'modern data client for Vue')
703
702
  .replaceAll(
704
703
  'data masking, Async React features, and',
705
704
  'data masking, Vue-native composables, and',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-fate",
3
- "version": "1.7.5",
3
+ "version": "1.7.7",
4
4
  "description": "Create a new fate app.",
5
5
  "homepage": "https://github.com/nkzw-tech/fate",
6
6
  "license": "MIT",
@@ -2,7 +2,7 @@
2
2
  "name": "@app/client",
3
3
  "version": "0.0.1",
4
4
  "private": true,
5
- "description": "fate is a modern data client for Vue.",
5
+ "description": "fate is a modern data client for the web.",
6
6
  "author": "Christoph Nakazawa <christoph.pojer@gmail.com>",
7
7
  "repository": {
8
8
  "type": "git",
@@ -22,13 +22,13 @@
22
22
  "@nkzw/core": "^1.3.1",
23
23
  "@nkzw/define-env": "^1.1.0",
24
24
  "@trpc/client": "^11.18.0",
25
- "@void/vue": "^0.21.2",
25
+ "@void/vue": "^0.24.0",
26
26
  "class-variance-authority": "^0.7.1",
27
27
  "clsx": "^2.1.1",
28
28
  "dotenv": "^17.4.2",
29
29
  "graphql-sse": "^2.6.1",
30
30
  "tailwind-merge": "^3.6.0",
31
- "void": "^0.21.2",
31
+ "void": "^0.24.0",
32
32
  "vue": "^3.5.41",
33
33
  "vue-fate": "latest"
34
34
  },
@@ -34,7 +34,7 @@ const [posts, loadNext] = useListView(PostConnectionView, postsRef);
34
34
  <span class="lowercase italic">fate</span> demo
35
35
  </p>
36
36
  <h1 class="text-3xl leading-tight font-semibold text-balance lg:text-4xl">
37
- fate is a modern data client for Vue inspired by Relay and GraphQL.
37
+ fate is a modern data client for the web inspired by Relay and GraphQL.
38
38
  </h1>
39
39
  <p class="text-sm text-white/80 lg:text-base">
40
40
  This template uses Vue-native fate composables, normalized caching, data masking, and
@@ -21,7 +21,9 @@ import Button from './Button.vue';
21
21
  >
22
22
  <span class="italic">fate</span>
23
23
  </span>
24
- <p class="hidden text-xs text-muted-foreground sm:block">A modern data client for Vue.</p>
24
+ <p class="hidden text-xs text-muted-foreground sm:block">
25
+ A modern data client for the web.
26
+ </p>
25
27
  </div>
26
28
  </Link>
27
29
  <Button size="sm" variant="ghost">
@@ -1,6 +1,6 @@
1
1
  # _fate_
2
2
 
3
- **_fate_** is a modern data client for React inspired by [Relay](https://relay.dev/) and [GraphQL](https://graphql.org/). It combines view composition, normalized caching, data masking, Async React features, and type-safe data fetching.
3
+ **_fate_** is a modern data client for the web inspired by [Relay](https://relay.dev/) and [GraphQL](https://graphql.org/). It combines view composition, normalized caching, data masking, Async React features, and type-safe data fetching.
4
4
 
5
5
  Check out [fate.technology](https://fate.technology) for documentation, examples, and guides.
6
6
 
@@ -27,8 +27,8 @@
27
27
  "@nkzw/stack": "^2.3.2",
28
28
  "@radix-ui/react-slot": "^1.3.3",
29
29
  "@trpc/client": "^11.18.0",
30
- "@void/react": "^0.21.2",
31
- "better-auth": "1.7.2",
30
+ "@void/react": "^0.24.0",
31
+ "better-auth": "^1.7.7",
32
32
  "class-variance-authority": "^0.7.1",
33
33
  "clsx": "^2.1.1",
34
34
  "fbtee": "^5.0.0",
@@ -38,7 +38,7 @@
38
38
  "react-error-boundary": "^6.1.3",
39
39
  "react-fate": "latest",
40
40
  "tailwind-merge": "^3.6.0",
41
- "void": "^0.21.2"
41
+ "void": "^0.24.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@nkzw/fbtee-compiler": "^5.0.0",
@@ -63,7 +63,7 @@ export default function HomePage() {
63
63
  <div className="space-y-3">
64
64
  <h1 className="text-3xl leading-tight font-semibold text-balance lg:text-4xl">
65
65
  <fbt desc="Description of fate">
66
- fate is a modern data client for React inspired by Relay and GraphQL.
66
+ fate is a modern data client for the web inspired by Relay and GraphQL.
67
67
  </fbt>
68
68
  </h1>
69
69
  <p className="text-sm text-white/80 lg:text-base">
@@ -1,6 +1,6 @@
1
1
  import { Slot } from '@radix-ui/react-slot';
2
2
  import { cva, type VariantProps } from 'class-variance-authority';
3
- import { type ButtonHTMLAttributes, type ReactNode, useOptimistic, useTransition } from 'react';
3
+ import { type ButtonHTMLAttributes, useOptimistic, useTransition } from 'react';
4
4
  import { useFormStatus } from 'react-dom';
5
5
  import cx from '../lib/cx.tsx';
6
6
 
@@ -66,7 +66,6 @@ const AsyncButton = ({
66
66
  children,
67
67
  className,
68
68
  disabled,
69
- pendingPlaceholder = '...',
70
69
  size,
71
70
  variant,
72
71
  ...props
@@ -74,7 +73,6 @@ const AsyncButton = ({
74
73
  VariantProps<typeof buttonVariants> & {
75
74
  action?: () => Promise<unknown> | void;
76
75
  asChild?: boolean;
77
- pendingPlaceholder?: ReactNode;
78
76
  }) => {
79
77
  const Component = asChild ? Slot : 'button';
80
78
 
@@ -100,7 +98,7 @@ const AsyncButton = ({
100
98
  onClick={onClick}
101
99
  {...props}
102
100
  >
103
- {isPending ? pendingPlaceholder : children}
101
+ {children}
104
102
  </Component>
105
103
  );
106
104
  };
@@ -50,7 +50,7 @@ export default function Header() {
50
50
  <span className="italic">fate</span>
51
51
  </span>
52
52
  <p className="hidden text-xs text-muted-foreground sm:block">
53
- <fbt desc="fate library tagline">A modern data client for React.</fbt>
53
+ <fbt desc="fate library tagline">A modern data client for the web.</fbt>
54
54
  </p>
55
55
  </div>
56
56
  </Stack>
@@ -2,7 +2,7 @@
2
2
  "name": "fate-app",
3
3
  "version": "0.0.1",
4
4
  "private": true,
5
- "description": "fate is a modern data client for React.",
5
+ "description": "fate is a modern data client for the web.",
6
6
  "author": "Christoph Nakazawa <christoph.pojer@gmail.com>",
7
7
  "repository": {
8
8
  "type": "git",
@@ -28,7 +28,7 @@ onlyBuiltDependencies:
28
28
  - unrs-resolver
29
29
 
30
30
  overrides:
31
- better-auth: 1.7.2
31
+ better-auth: 1.7.7
32
32
  drizzle-orm: 0.45.3
33
33
  kysely: 0.28.17
34
34
  vite: 'catalog:'
@@ -26,10 +26,10 @@
26
26
  "@nkzw/define-env": "^1.1.0",
27
27
  "@nkzw/fate": "latest",
28
28
  "@trpc/server": "^11.18.0",
29
- "better-auth": "1.7.2",
29
+ "better-auth": "^1.7.7",
30
30
  "drizzle-orm": "^0.45.3",
31
31
  "hono": "^4.13.5",
32
- "pg": "^8.23.0",
32
+ "pg": "^8.23.1",
33
33
  "zod": "^4.4.3"
34
34
  },
35
35
  "devDependencies": {
@@ -46,6 +46,7 @@ export const session = pgTable(
46
46
  createdAt: timestamp({ mode: 'date' }).notNull().defaultNow(),
47
47
  expiresAt: timestamp({ mode: 'date' }).notNull(),
48
48
  id: idColumn().primaryKey(),
49
+ impersonatedBy: text(),
49
50
  ipAddress: text(),
50
51
  token: text().notNull(),
51
52
  updatedAt: timestamp({ mode: 'date' }).notNull().defaultNow(),
@@ -66,7 +67,6 @@ export const account = pgTable(
66
67
  createdAt: timestamp({ mode: 'date' }).notNull().defaultNow(),
67
68
  id: idColumn().primaryKey(),
68
69
  idToken: text(),
69
- issuer: text().notNull(),
70
70
  password: text(),
71
71
  providerId: text().notNull(),
72
72
  refreshToken: text(),
@@ -77,7 +77,22 @@ export const account = pgTable(
77
77
  .notNull()
78
78
  .references(() => user.id, { onDelete: 'cascade' }),
79
79
  },
80
- (table) => [uniqueIndex('account_issuer_accountId_key').on(table.issuer, table.accountId)],
80
+ (table) => [
81
+ uniqueIndex('account_providerId_accountId_key').on(table.providerId, table.accountId),
82
+ ],
83
+ );
84
+
85
+ export const verification = pgTable(
86
+ 'verification',
87
+ {
88
+ createdAt: timestamp({ mode: 'date' }).notNull().defaultNow(),
89
+ expiresAt: timestamp({ mode: 'date' }).notNull(),
90
+ id: idColumn().primaryKey(),
91
+ identifier: text().notNull(),
92
+ updatedAt: timestamp({ mode: 'date' }).notNull().defaultNow(),
93
+ value: text().notNull(),
94
+ },
95
+ (table) => [index('verification_identifier_idx').on(table.identifier)],
81
96
  );
82
97
 
83
98
  export const post = pgTable(
@@ -164,6 +179,7 @@ const schema = {
164
179
  sessionRelations,
165
180
  user,
166
181
  userRelations,
182
+ verification,
167
183
  };
168
184
 
169
185
  export default schema;
@@ -1,6 +1,6 @@
1
1
  # _fate_
2
2
 
3
- **_fate_** is a modern data client for React inspired by [Relay](https://relay.dev/) and [GraphQL](https://graphql.org/). It combines view composition, normalized caching, data masking, Async React features, and type-safe data fetching.
3
+ **_fate_** is a modern data client for the web inspired by [Relay](https://relay.dev/) and [GraphQL](https://graphql.org/). It combines view composition, normalized caching, data masking, Async React features, and type-safe data fetching.
4
4
 
5
5
  Check out [fate.technology](https://fate.technology) for documentation, examples, and guides.
6
6
 
@@ -26,8 +26,8 @@
26
26
  "@nkzw/define-env": "^1.1.0",
27
27
  "@nkzw/stack": "^2.3.2",
28
28
  "@radix-ui/react-slot": "^1.3.3",
29
- "@void/react": "^0.21.2",
30
- "better-auth": "1.7.2",
29
+ "@void/react": "^0.24.0",
30
+ "better-auth": "^1.7.7",
31
31
  "class-variance-authority": "^0.7.1",
32
32
  "clsx": "^2.1.1",
33
33
  "fbtee": "^5.0.0",
@@ -38,7 +38,7 @@
38
38
  "react-error-boundary": "^6.1.3",
39
39
  "react-fate": "latest",
40
40
  "tailwind-merge": "^3.6.0",
41
- "void": "^0.21.2"
41
+ "void": "^0.24.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@nkzw/fbtee-compiler": "^5.0.0",
@@ -63,7 +63,7 @@ export default function HomePage() {
63
63
  <div className="space-y-3">
64
64
  <h1 className="text-3xl leading-tight font-semibold text-balance lg:text-4xl">
65
65
  <fbt desc="Description of fate">
66
- fate is a modern data client for React inspired by Relay and GraphQL.
66
+ fate is a modern data client for the web inspired by Relay and GraphQL.
67
67
  </fbt>
68
68
  </h1>
69
69
  <p className="text-sm text-white/80 lg:text-base">
@@ -1,6 +1,6 @@
1
1
  import { Slot } from '@radix-ui/react-slot';
2
2
  import { cva, type VariantProps } from 'class-variance-authority';
3
- import { type ButtonHTMLAttributes, type ReactNode, useOptimistic, useTransition } from 'react';
3
+ import { type ButtonHTMLAttributes, useOptimistic, useTransition } from 'react';
4
4
  import { useFormStatus } from 'react-dom';
5
5
  import cx from '../lib/cx.tsx';
6
6
 
@@ -66,7 +66,6 @@ const AsyncButton = ({
66
66
  children,
67
67
  className,
68
68
  disabled,
69
- pendingPlaceholder = '...',
70
69
  size,
71
70
  variant,
72
71
  ...props
@@ -74,7 +73,6 @@ const AsyncButton = ({
74
73
  VariantProps<typeof buttonVariants> & {
75
74
  action?: () => Promise<unknown> | void;
76
75
  asChild?: boolean;
77
- pendingPlaceholder?: ReactNode;
78
76
  }) => {
79
77
  const Component = asChild ? Slot : 'button';
80
78
 
@@ -100,7 +98,7 @@ const AsyncButton = ({
100
98
  onClick={onClick}
101
99
  {...props}
102
100
  >
103
- {isPending ? pendingPlaceholder : children}
101
+ {children}
104
102
  </Component>
105
103
  );
106
104
  };
@@ -50,7 +50,7 @@ export default function Header() {
50
50
  <span className="italic">fate</span>
51
51
  </span>
52
52
  <p className="hidden text-xs text-muted-foreground sm:block">
53
- <fbt desc="fate library tagline">A modern data client for React.</fbt>
53
+ <fbt desc="fate library tagline">A modern data client for the web.</fbt>
54
54
  </p>
55
55
  </div>
56
56
  </Stack>
@@ -2,7 +2,7 @@
2
2
  "name": "fate-app",
3
3
  "version": "0.0.1",
4
4
  "private": true,
5
- "description": "fate is a modern data client for React.",
5
+ "description": "fate is a modern data client for the web.",
6
6
  "author": "Christoph Nakazawa <christoph.pojer@gmail.com>",
7
7
  "repository": {
8
8
  "type": "git",
@@ -31,7 +31,7 @@ onlyBuiltDependencies:
31
31
  - unrs-resolver
32
32
 
33
33
  overrides:
34
- better-auth: 1.7.2
34
+ better-auth: 1.7.7
35
35
  kysely: 0.28.17
36
36
  vite: 'catalog:'
37
37
  vitest: 'catalog:'
@@ -30,7 +30,7 @@
30
30
  "@pothos/plugin-scope-auth": "^4.1.7",
31
31
  "@prisma/adapter-pg": "^7.10.0",
32
32
  "@prisma/client": "^7.10.0",
33
- "better-auth": "1.7.2",
33
+ "better-auth": "^1.7.7",
34
34
  "graphql": "^17.0.2",
35
35
  "graphql-yoga": "^5.22.0",
36
36
  "hono": "^4.13.5"
@@ -51,15 +51,16 @@ model User {
51
51
  }
52
52
 
53
53
  model Session {
54
- id String @unique @default(uuid(7))
55
- expiresAt DateTime
56
- token String
57
- createdAt DateTime
58
- updatedAt DateTime
59
- ipAddress String?
60
- userAgent String?
61
- userId String
62
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
54
+ id String @unique @default(uuid(7))
55
+ expiresAt DateTime
56
+ token String
57
+ createdAt DateTime
58
+ updatedAt DateTime
59
+ impersonatedBy String?
60
+ ipAddress String?
61
+ userAgent String?
62
+ userId String
63
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
63
64
 
64
65
  @@unique([token])
65
66
  @@map("session")
@@ -69,7 +70,6 @@ model Account {
69
70
  id String @unique @default(uuid(7))
70
71
  accountId String
71
72
  providerId String
72
- issuer String
73
73
  userId String
74
74
  user User @relation(fields: [userId], references: [id], onDelete: Cascade)
75
75
  accessToken String?
@@ -82,10 +82,22 @@ model Account {
82
82
  createdAt DateTime
83
83
  updatedAt DateTime
84
84
 
85
- @@unique([issuer, accountId])
85
+ @@unique([providerId, accountId])
86
86
  @@map("account")
87
87
  }
88
88
 
89
+ model Verification {
90
+ id String @id @default(uuid(7))
91
+ identifier String
92
+ value String
93
+ expiresAt DateTime
94
+ createdAt DateTime @default(now())
95
+ updatedAt DateTime @updatedAt
96
+
97
+ @@index([identifier])
98
+ @@map("verification")
99
+ }
100
+
89
101
  model Post {
90
102
  id String @id @default(uuid(7))
91
103
  title String
@@ -1,6 +1,6 @@
1
1
  # _fate_
2
2
 
3
- **_fate_** is a modern data client for React inspired by [Relay](https://relay.dev/) and [GraphQL](https://graphql.org/). It combines view composition, normalized caching, data masking, Async React features, and type-safe data fetching.
3
+ **_fate_** is a modern data client for the web inspired by [Relay](https://relay.dev/) and [GraphQL](https://graphql.org/). It combines view composition, normalized caching, data masking, Async React features, and type-safe data fetching.
4
4
 
5
5
  ## Existing GraphQL Template
6
6
 
@@ -2,7 +2,7 @@
2
2
  "name": "fate-app",
3
3
  "version": "0.0.1",
4
4
  "private": true,
5
- "description": "fate is a modern data client for React.",
5
+ "description": "fate is a modern data client for the web.",
6
6
  "author": "Christoph Nakazawa <christoph.pojer@gmail.com>",
7
7
  "repository": {
8
8
  "type": "git",
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@nkzw/fate": "latest",
26
- "@void/react": "^0.21.2",
26
+ "@void/react": "^0.24.0",
27
27
  "fbtee": "^5.0.0",
28
28
  "graphql-sse": "^2.6.1",
29
29
  "lucide-react": "^1.34.0",
@@ -31,7 +31,7 @@
31
31
  "react-dom": "^19.3.0",
32
32
  "react-error-boundary": "^6.1.3",
33
33
  "react-fate": "latest",
34
- "void": "^0.21.2"
34
+ "void": "^0.24.0"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@nkzw/eslint-plugin": "^2.0.0",
@@ -27,7 +27,7 @@ onlyBuiltDependencies:
27
27
  - workerd
28
28
 
29
29
  overrides:
30
- better-auth: 1.7.2
30
+ better-auth: 1.7.7
31
31
  vite: 'catalog:'
32
32
  vitest: 'catalog:'
33
33
 
@@ -1,6 +1,6 @@
1
1
  # _fate_
2
2
 
3
- **_fate_** is a modern data client for React inspired by [Relay](https://relay.dev/) and [GraphQL](https://graphql.org/). It combines view composition, normalized caching, data masking, Async React features, and type-safe data fetching.
3
+ **_fate_** is a modern data client for the web inspired by [Relay](https://relay.dev/) and [GraphQL](https://graphql.org/). It combines view composition, normalized caching, data masking, Async React features, and type-safe data fetching.
4
4
 
5
5
  Check out [fate.technology](https://fate.technology) for documentation, examples, and guides.
6
6
 
@@ -26,8 +26,8 @@
26
26
  "@nkzw/define-env": "^1.1.0",
27
27
  "@nkzw/stack": "^2.3.2",
28
28
  "@radix-ui/react-slot": "^1.3.3",
29
- "@void/react": "^0.21.2",
30
- "better-auth": "1.7.2",
29
+ "@void/react": "^0.24.0",
30
+ "better-auth": "^1.7.7",
31
31
  "class-variance-authority": "^0.7.1",
32
32
  "clsx": "^2.1.1",
33
33
  "fbtee": "^5.0.0",
@@ -37,7 +37,7 @@
37
37
  "react-error-boundary": "^6.1.3",
38
38
  "react-fate": "latest",
39
39
  "tailwind-merge": "^3.6.0",
40
- "void": "^0.21.2"
40
+ "void": "^0.24.0"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@nkzw/fbtee-compiler": "^5.0.0",
@@ -63,7 +63,7 @@ export default function HomePage() {
63
63
  <div className="space-y-3">
64
64
  <h1 className="text-3xl leading-tight font-semibold text-balance lg:text-4xl">
65
65
  <fbt desc="Description of fate">
66
- fate is a modern data client for React inspired by Relay and GraphQL.
66
+ fate is a modern data client for the web inspired by Relay and GraphQL.
67
67
  </fbt>
68
68
  </h1>
69
69
  <p className="text-sm text-white/80 lg:text-base">
@@ -1,6 +1,6 @@
1
1
  import { Slot } from '@radix-ui/react-slot';
2
2
  import { cva, type VariantProps } from 'class-variance-authority';
3
- import { type ButtonHTMLAttributes, type ReactNode, useOptimistic, useTransition } from 'react';
3
+ import { type ButtonHTMLAttributes, useOptimistic, useTransition } from 'react';
4
4
  import { useFormStatus } from 'react-dom';
5
5
  import cx from '../lib/cx.tsx';
6
6
 
@@ -66,7 +66,6 @@ const AsyncButton = ({
66
66
  children,
67
67
  className,
68
68
  disabled,
69
- pendingPlaceholder = '...',
70
69
  size,
71
70
  variant,
72
71
  ...props
@@ -74,7 +73,6 @@ const AsyncButton = ({
74
73
  VariantProps<typeof buttonVariants> & {
75
74
  action?: () => Promise<unknown> | void;
76
75
  asChild?: boolean;
77
- pendingPlaceholder?: ReactNode;
78
76
  }) => {
79
77
  const Component = asChild ? Slot : 'button';
80
78
 
@@ -100,7 +98,7 @@ const AsyncButton = ({
100
98
  onClick={onClick}
101
99
  {...props}
102
100
  >
103
- {isPending ? pendingPlaceholder : children}
101
+ {children}
104
102
  </Component>
105
103
  );
106
104
  };
@@ -50,7 +50,7 @@ export default function Header() {
50
50
  <span className="italic">fate</span>
51
51
  </span>
52
52
  <p className="hidden text-xs text-muted-foreground sm:block">
53
- <fbt desc="fate library tagline">A modern data client for React.</fbt>
53
+ <fbt desc="fate library tagline">A modern data client for the web.</fbt>
54
54
  </p>
55
55
  </div>
56
56
  </Stack>
@@ -2,7 +2,7 @@
2
2
  "name": "fate-app",
3
3
  "version": "0.0.1",
4
4
  "private": true,
5
- "description": "fate is a modern data client for React.",
5
+ "description": "fate is a modern data client for the web.",
6
6
  "author": "Christoph Nakazawa <christoph.pojer@gmail.com>",
7
7
  "repository": {
8
8
  "type": "git",
@@ -28,7 +28,7 @@ onlyBuiltDependencies:
28
28
  - unrs-resolver
29
29
 
30
30
  overrides:
31
- better-auth: 1.7.2
31
+ better-auth: 1.7.7
32
32
  drizzle-orm: 0.45.3
33
33
  kysely: 0.28.17
34
34
  vite: 'catalog:'
@@ -24,10 +24,10 @@
24
24
  "@nkzw/core": "^1.3.1",
25
25
  "@nkzw/define-env": "^1.1.0",
26
26
  "@nkzw/fate": "latest",
27
- "better-auth": "1.7.2",
27
+ "better-auth": "^1.7.7",
28
28
  "drizzle-orm": "^0.45.3",
29
29
  "hono": "^4.13.5",
30
- "pg": "^8.23.0",
30
+ "pg": "^8.23.1",
31
31
  "zod": "^4.4.3"
32
32
  },
33
33
  "devDependencies": {
@@ -46,6 +46,7 @@ export const session = pgTable(
46
46
  createdAt: timestamp({ mode: 'date' }).notNull().defaultNow(),
47
47
  expiresAt: timestamp({ mode: 'date' }).notNull(),
48
48
  id: idColumn().primaryKey(),
49
+ impersonatedBy: text(),
49
50
  ipAddress: text(),
50
51
  token: text().notNull(),
51
52
  updatedAt: timestamp({ mode: 'date' }).notNull().defaultNow(),
@@ -66,7 +67,6 @@ export const account = pgTable(
66
67
  createdAt: timestamp({ mode: 'date' }).notNull().defaultNow(),
67
68
  id: idColumn().primaryKey(),
68
69
  idToken: text(),
69
- issuer: text().notNull(),
70
70
  password: text(),
71
71
  providerId: text().notNull(),
72
72
  refreshToken: text(),
@@ -77,7 +77,22 @@ export const account = pgTable(
77
77
  .notNull()
78
78
  .references(() => user.id, { onDelete: 'cascade' }),
79
79
  },
80
- (table) => [uniqueIndex('account_issuer_accountId_key').on(table.issuer, table.accountId)],
80
+ (table) => [
81
+ uniqueIndex('account_providerId_accountId_key').on(table.providerId, table.accountId),
82
+ ],
83
+ );
84
+
85
+ export const verification = pgTable(
86
+ 'verification',
87
+ {
88
+ createdAt: timestamp({ mode: 'date' }).notNull().defaultNow(),
89
+ expiresAt: timestamp({ mode: 'date' }).notNull(),
90
+ id: idColumn().primaryKey(),
91
+ identifier: text().notNull(),
92
+ updatedAt: timestamp({ mode: 'date' }).notNull().defaultNow(),
93
+ value: text().notNull(),
94
+ },
95
+ (table) => [index('verification_identifier_idx').on(table.identifier)],
81
96
  );
82
97
 
83
98
  export const post = pgTable(
@@ -164,6 +179,7 @@ const schema = {
164
179
  sessionRelations,
165
180
  user,
166
181
  userRelations,
182
+ verification,
167
183
  };
168
184
 
169
185
  export default schema;
@@ -1,6 +1,6 @@
1
1
  # _fate_
2
2
 
3
- **_fate_** is a modern data client for React inspired by [Relay](https://relay.dev/) and [GraphQL](https://graphql.org/). It combines view composition, normalized caching, data masking, Async React features, and type-safe data fetching.
3
+ **_fate_** is a modern data client for the web inspired by [Relay](https://relay.dev/) and [GraphQL](https://graphql.org/). It combines view composition, normalized caching, data masking, Async React features, and type-safe data fetching.
4
4
 
5
5
  Check out [fate.technology](https://fate.technology) for documentation, examples, and guides.
6
6
 
@@ -27,8 +27,8 @@
27
27
  "@nkzw/stack": "^2.3.2",
28
28
  "@radix-ui/react-slot": "^1.3.3",
29
29
  "@trpc/client": "^11.18.0",
30
- "@void/react": "^0.21.2",
31
- "better-auth": "1.7.2",
30
+ "@void/react": "^0.24.0",
31
+ "better-auth": "^1.7.7",
32
32
  "class-variance-authority": "^0.7.1",
33
33
  "clsx": "^2.1.1",
34
34
  "fbtee": "^5.0.0",
@@ -38,7 +38,7 @@
38
38
  "react-error-boundary": "^6.1.3",
39
39
  "react-fate": "latest",
40
40
  "tailwind-merge": "^3.6.0",
41
- "void": "^0.21.2"
41
+ "void": "^0.24.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@nkzw/fbtee-compiler": "^5.0.0",