zenstack 1.0.0 → 1.0.16

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 (264) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +126 -1
  3. package/bin/cli +3 -0
  4. package/bin/post-install.js +24 -0
  5. package/cli/cli-error.d.ts +5 -0
  6. package/cli/cli-error.js +10 -0
  7. package/cli/cli-error.js.map +1 -0
  8. package/cli/cli-util.d.ts +18 -0
  9. package/cli/cli-util.js +143 -0
  10. package/cli/cli-util.js.map +1 -0
  11. package/cli/index.d.ts +15 -0
  12. package/cli/index.js +121 -0
  13. package/cli/index.js.map +1 -0
  14. package/cli/plugin-runner.d.ts +14 -0
  15. package/cli/plugin-runner.js +145 -0
  16. package/cli/plugin-runner.js.map +1 -0
  17. package/constants.d.ts +1 -0
  18. package/constants.js +6 -0
  19. package/constants.js.map +1 -0
  20. package/language-server/constants.d.ts +15 -0
  21. package/language-server/constants.js +20 -0
  22. package/language-server/constants.js.map +1 -0
  23. package/language-server/main.d.ts +1 -0
  24. package/language-server/main.js +13 -0
  25. package/language-server/main.js.map +1 -0
  26. package/language-server/types.d.ts +10 -0
  27. package/language-server/types.js +3 -0
  28. package/language-server/types.js.map +1 -0
  29. package/language-server/utils.d.ts +18 -0
  30. package/language-server/utils.js +58 -0
  31. package/language-server/utils.js.map +1 -0
  32. package/language-server/validator/attribute-validator.d.ts +9 -0
  33. package/language-server/validator/attribute-validator.js +11 -0
  34. package/language-server/validator/attribute-validator.js.map +1 -0
  35. package/language-server/validator/datamodel-validator.d.ts +15 -0
  36. package/language-server/validator/datamodel-validator.js +278 -0
  37. package/language-server/validator/datamodel-validator.js.map +1 -0
  38. package/language-server/validator/datasource-validator.d.ts +12 -0
  39. package/language-server/validator/datasource-validator.js +66 -0
  40. package/language-server/validator/datasource-validator.js.map +1 -0
  41. package/language-server/validator/enum-validator.d.ts +11 -0
  42. package/language-server/validator/enum-validator.js +28 -0
  43. package/language-server/validator/enum-validator.js.map +1 -0
  44. package/language-server/validator/expression-validator.d.ts +10 -0
  45. package/language-server/validator/expression-validator.js +30 -0
  46. package/language-server/validator/expression-validator.js.map +1 -0
  47. package/language-server/validator/schema-validator.d.ts +10 -0
  48. package/language-server/validator/schema-validator.js +28 -0
  49. package/language-server/validator/schema-validator.js.map +1 -0
  50. package/language-server/validator/utils.d.ts +25 -0
  51. package/language-server/validator/utils.js +257 -0
  52. package/language-server/validator/utils.js.map +1 -0
  53. package/language-server/validator/zmodel-validator.d.ts +21 -0
  54. package/language-server/validator/zmodel-validator.js +69 -0
  55. package/language-server/validator/zmodel-validator.js.map +1 -0
  56. package/language-server/zmodel-code-action.d.ts +14 -0
  57. package/language-server/zmodel-code-action.js +93 -0
  58. package/language-server/zmodel-code-action.js.map +1 -0
  59. package/language-server/zmodel-formatter.d.ts +9 -0
  60. package/language-server/zmodel-formatter.js +76 -0
  61. package/language-server/zmodel-formatter.js.map +1 -0
  62. package/language-server/zmodel-linker.d.ts +29 -0
  63. package/language-server/zmodel-linker.js +366 -0
  64. package/language-server/zmodel-linker.js.map +1 -0
  65. package/language-server/zmodel-module.d.ts +41 -0
  66. package/language-server/zmodel-module.js +80 -0
  67. package/language-server/zmodel-module.js.map +1 -0
  68. package/language-server/zmodel-scope.d.ts +10 -0
  69. package/language-server/zmodel-scope.js +44 -0
  70. package/language-server/zmodel-scope.js.map +1 -0
  71. package/language-server/zmodel-workspace-manager.d.ts +8 -0
  72. package/language-server/zmodel-workspace-manager.js +37 -0
  73. package/language-server/zmodel-workspace-manager.js.map +1 -0
  74. package/package.json +133 -8
  75. package/plugins/access-policy/expression-writer.d.ts +39 -0
  76. package/plugins/access-policy/expression-writer.js +361 -0
  77. package/plugins/access-policy/expression-writer.js.map +1 -0
  78. package/plugins/access-policy/index.d.ts +4 -0
  79. package/plugins/access-policy/index.js +24 -0
  80. package/plugins/access-policy/index.js.map +1 -0
  81. package/plugins/access-policy/policy-guard-generator.d.ts +15 -0
  82. package/plugins/access-policy/policy-guard-generator.js +349 -0
  83. package/plugins/access-policy/policy-guard-generator.js.map +1 -0
  84. package/plugins/access-policy/typescript-expression-transformer.d.ts +26 -0
  85. package/plugins/access-policy/typescript-expression-transformer.js +111 -0
  86. package/plugins/access-policy/typescript-expression-transformer.js.map +1 -0
  87. package/plugins/access-policy/utils.d.ts +5 -0
  88. package/plugins/access-policy/utils.js +14 -0
  89. package/plugins/access-policy/utils.js.map +1 -0
  90. package/plugins/access-policy/zod-schema-generator.d.ts +12 -0
  91. package/plugins/access-policy/zod-schema-generator.js +158 -0
  92. package/plugins/access-policy/zod-schema-generator.js.map +1 -0
  93. package/plugins/model-meta/index.d.ts +4 -0
  94. package/plugins/model-meta/index.js +168 -0
  95. package/plugins/model-meta/index.js.map +1 -0
  96. package/plugins/plugin-utils.d.ts +16 -0
  97. package/plugins/plugin-utils.js +54 -0
  98. package/plugins/plugin-utils.js.map +1 -0
  99. package/plugins/prisma/indent-string.d.ts +4 -0
  100. package/plugins/prisma/indent-string.js +12 -0
  101. package/plugins/prisma/indent-string.js.map +1 -0
  102. package/plugins/prisma/index.d.ts +4 -0
  103. package/plugins/prisma/index.js +24 -0
  104. package/plugins/prisma/index.js.map +1 -0
  105. package/plugins/prisma/prisma-builder.d.ts +152 -0
  106. package/plugins/prisma/prisma-builder.js +363 -0
  107. package/plugins/prisma/prisma-builder.js.map +1 -0
  108. package/plugins/prisma/schema-generator.d.ts +25 -0
  109. package/plugins/prisma/schema-generator.js +292 -0
  110. package/plugins/prisma/schema-generator.js.map +1 -0
  111. package/plugins/prisma/zmodel-code-generator.d.ts +28 -0
  112. package/plugins/prisma/zmodel-code-generator.js +114 -0
  113. package/plugins/prisma/zmodel-code-generator.js.map +1 -0
  114. package/res/prism-zmodel.js +20 -0
  115. package/res/starter.zmodel +51 -0
  116. package/res/stdlib.zmodel +346 -0
  117. package/telemetry.d.ts +20 -0
  118. package/telemetry.js +119 -0
  119. package/telemetry.js.map +1 -0
  120. package/types.d.ts +12 -0
  121. package/types.js +3 -0
  122. package/types.js.map +1 -0
  123. package/utils/ast-utils.d.ts +16 -0
  124. package/utils/ast-utils.js +85 -0
  125. package/utils/ast-utils.js.map +1 -0
  126. package/utils/exec-utils.d.ts +6 -0
  127. package/utils/exec-utils.js +13 -0
  128. package/utils/exec-utils.js.map +1 -0
  129. package/utils/pkg-utils.d.ts +3 -0
  130. package/utils/pkg-utils.js +46 -0
  131. package/utils/pkg-utils.js.map +1 -0
  132. package/utils/version-utils.d.ts +1 -0
  133. package/utils/version-utils.js +14 -0
  134. package/utils/version-utils.js.map +1 -0
  135. package/.vscode/extensions.json +0 -7
  136. package/.vscode/launch.json +0 -49
  137. package/.vscode/settings.json +0 -4
  138. package/packages/internal/jest.config.ts +0 -32
  139. package/packages/internal/package.json +0 -42
  140. package/packages/internal/src/constants.ts +0 -1
  141. package/packages/internal/src/handler/data/guard-utils.ts +0 -7
  142. package/packages/internal/src/handler/data/handler.ts +0 -415
  143. package/packages/internal/src/handler/data/query-processor.ts +0 -504
  144. package/packages/internal/src/handler/index.ts +0 -1
  145. package/packages/internal/src/handler/types.ts +0 -20
  146. package/packages/internal/src/index.ts +0 -3
  147. package/packages/internal/src/request-handler.ts +0 -27
  148. package/packages/internal/src/request.ts +0 -101
  149. package/packages/internal/src/types.ts +0 -40
  150. package/packages/internal/tests/query-processor.test.ts +0 -172
  151. package/packages/internal/tsconfig.json +0 -21
  152. package/packages/runtime/auth.d.ts +0 -1
  153. package/packages/runtime/auth.js +0 -3
  154. package/packages/runtime/hooks.d.ts +0 -10
  155. package/packages/runtime/hooks.js +0 -3
  156. package/packages/runtime/index.d.ts +0 -3
  157. package/packages/runtime/index.js +0 -1
  158. package/packages/runtime/package-lock.json +0 -512
  159. package/packages/runtime/package.json +0 -16
  160. package/packages/runtime/server.d.ts +0 -1
  161. package/packages/runtime/server.js +0 -3
  162. package/packages/runtime/types.d.ts +0 -1
  163. package/packages/runtime/types.js +0 -3
  164. package/packages/schema/.eslintrc.json +0 -13
  165. package/packages/schema/.vscodeignore +0 -4
  166. package/packages/schema/asset/logo-dark.png +0 -0
  167. package/packages/schema/asset/logo-light.png +0 -0
  168. package/packages/schema/bin/cli +0 -3
  169. package/packages/schema/jest.config.ts +0 -32
  170. package/packages/schema/langium-config.json +0 -14
  171. package/packages/schema/langium-quickstart.md +0 -41
  172. package/packages/schema/language-configuration.json +0 -30
  173. package/packages/schema/package.json +0 -96
  174. package/packages/schema/src/cli/cli-util.ts +0 -80
  175. package/packages/schema/src/cli/index.ts +0 -64
  176. package/packages/schema/src/extension.ts +0 -76
  177. package/packages/schema/src/generator/constants.ts +0 -5
  178. package/packages/schema/src/generator/index.ts +0 -92
  179. package/packages/schema/src/generator/next-auth/index.ts +0 -197
  180. package/packages/schema/src/generator/package.template.json +0 -9
  181. package/packages/schema/src/generator/prisma/expression-writer.ts +0 -352
  182. package/packages/schema/src/generator/prisma/index.ts +0 -32
  183. package/packages/schema/src/generator/prisma/plain-expression-builder.ts +0 -91
  184. package/packages/schema/src/generator/prisma/prisma-builder.ts +0 -366
  185. package/packages/schema/src/generator/prisma/query-gard-generator.ts +0 -208
  186. package/packages/schema/src/generator/prisma/schema-generator.ts +0 -300
  187. package/packages/schema/src/generator/react-hooks/index.ts +0 -181
  188. package/packages/schema/src/generator/service/index.ts +0 -107
  189. package/packages/schema/src/generator/tsconfig.template.json +0 -17
  190. package/packages/schema/src/generator/types.ts +0 -17
  191. package/packages/schema/src/generator/utils.ts +0 -9
  192. package/packages/schema/src/language-server/generated/ast.ts +0 -603
  193. package/packages/schema/src/language-server/generated/grammar.ts +0 -2190
  194. package/packages/schema/src/language-server/generated/module.ts +0 -24
  195. package/packages/schema/src/language-server/main.ts +0 -12
  196. package/packages/schema/src/language-server/stdlib.zmodel +0 -22
  197. package/packages/schema/src/language-server/types.ts +0 -9
  198. package/packages/schema/src/language-server/zmodel-index.ts +0 -33
  199. package/packages/schema/src/language-server/zmodel-linker.ts +0 -409
  200. package/packages/schema/src/language-server/zmodel-module.ts +0 -90
  201. package/packages/schema/src/language-server/zmodel-scope.ts +0 -21
  202. package/packages/schema/src/language-server/zmodel-validator.ts +0 -35
  203. package/packages/schema/src/language-server/zmodel.langium +0 -186
  204. package/packages/schema/src/utils/exec-utils.ts +0 -5
  205. package/packages/schema/src/utils/indent-string.ts +0 -6
  206. package/packages/schema/syntaxes/zmodel.json +0 -57
  207. package/packages/schema/syntaxes/zmodel.tmLanguage.json +0 -57
  208. package/packages/schema/tests/generator/expression-writer.test.ts +0 -676
  209. package/packages/schema/tests/generator/prisma-builder.test.ts +0 -138
  210. package/packages/schema/tests/schema/parser.test.ts +0 -423
  211. package/packages/schema/tests/schema/sample-todo.test.ts +0 -14
  212. package/packages/schema/tests/utils.ts +0 -38
  213. package/packages/schema/tsconfig.json +0 -23
  214. package/pnpm-workspace.yaml +0 -3
  215. package/samples/todo/.env +0 -2
  216. package/samples/todo/.eslintrc.json +0 -3
  217. package/samples/todo/.vscode/launch.json +0 -11
  218. package/samples/todo/README.md +0 -34
  219. package/samples/todo/components/AuthGuard.tsx +0 -17
  220. package/samples/todo/components/Avatar.tsx +0 -22
  221. package/samples/todo/components/BreadCrumb.tsx +0 -44
  222. package/samples/todo/components/ManageMembers.tsx +0 -134
  223. package/samples/todo/components/NavBar.tsx +0 -57
  224. package/samples/todo/components/SpaceMembers.tsx +0 -76
  225. package/samples/todo/components/Spaces.tsx +0 -28
  226. package/samples/todo/components/TimeInfo.tsx +0 -17
  227. package/samples/todo/components/Todo.tsx +0 -72
  228. package/samples/todo/components/TodoList.tsx +0 -77
  229. package/samples/todo/lib/context.ts +0 -31
  230. package/samples/todo/next.config.js +0 -10
  231. package/samples/todo/package-lock.json +0 -7527
  232. package/samples/todo/package.json +0 -45
  233. package/samples/todo/pages/_app.tsx +0 -50
  234. package/samples/todo/pages/api/auth/[...nextauth].ts +0 -83
  235. package/samples/todo/pages/api/zenstack/[...path].ts +0 -16
  236. package/samples/todo/pages/create-space.tsx +0 -114
  237. package/samples/todo/pages/index.tsx +0 -32
  238. package/samples/todo/pages/space/[slug]/[listId]/index.tsx +0 -88
  239. package/samples/todo/pages/space/[slug]/index.tsx +0 -169
  240. package/samples/todo/postcss.config.js +0 -6
  241. package/samples/todo/public/avatar.jpg +0 -0
  242. package/samples/todo/public/favicon.ico +0 -0
  243. package/samples/todo/public/logo.png +0 -0
  244. package/samples/todo/public/vercel.svg +0 -4
  245. package/samples/todo/styles/globals.css +0 -7
  246. package/samples/todo/tailwind.config.js +0 -11
  247. package/samples/todo/tsconfig.json +0 -28
  248. package/samples/todo/types/next-auth.d.ts +0 -14
  249. package/samples/todo/types/next.d.ts +0 -16
  250. package/samples/todo/zenstack/migrations/20221014084317_init/migration.sql +0 -153
  251. package/samples/todo/zenstack/migrations/20221020094651_upate_cli/migration.sql +0 -23
  252. package/samples/todo/zenstack/migrations/migration_lock.toml +0 -3
  253. package/samples/todo/zenstack/schema.prisma +0 -126
  254. package/samples/todo/zenstack/schema.zmodel +0 -161
  255. package/tests/integration/jest.config.ts +0 -16
  256. package/tests/integration/package-lock.json +0 -1081
  257. package/tests/integration/package.json +0 -27
  258. package/tests/integration/tests/operation-coverate.test.ts +0 -563
  259. package/tests/integration/tests/operations.zmodel +0 -69
  260. package/tests/integration/tests/todo-e2e.test.ts +0 -577
  261. package/tests/integration/tests/todo.zmodel +0 -123
  262. package/tests/integration/tests/tsconfig.template.json +0 -10
  263. package/tests/integration/tests/utils.ts +0 -133
  264. package/tests/integration/tsconfig.json +0 -10
@@ -1,14 +0,0 @@
1
- import { Session } from 'next-auth';
2
- import { JWT } from 'next-auth/jwt';
3
-
4
- /** Example on how to extend the built-in session types */
5
- declare module 'next-auth' {
6
- interface Session {
7
- user: { id: string; name: string; email: string; image?: string };
8
- }
9
- }
10
-
11
- /** Example on how to extend the built-in types for JWT */
12
- declare module 'next-auth/jwt' {
13
- interface JWT {}
14
- }
@@ -1,16 +0,0 @@
1
- import type { NextComponentType, NextPageContext } from 'next';
2
- import type { Session } from 'next-auth';
3
- import type { Router } from 'next/router';
4
-
5
- declare module 'next/app' {
6
- type AppProps<P = Record<string, unknown>> = {
7
- Component: NextComponentType<NextPageContext, any, P>;
8
- router: Router;
9
- __N_SSG?: boolean;
10
- __N_SSP?: boolean;
11
- pageProps: P & {
12
- /** Initial session passed in from `getServerSideProps` or `getInitialProps` */
13
- session?: Session;
14
- };
15
- };
16
- }
@@ -1,153 +0,0 @@
1
- -- CreateEnum
2
- CREATE TYPE "SpaceUserRole" AS ENUM ('USER', 'ADMIN');
3
-
4
- -- CreateTable
5
- CREATE TABLE "Space" (
6
- "id" TEXT NOT NULL,
7
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
8
- "updatedAt" TIMESTAMP(3) NOT NULL,
9
- "name" TEXT NOT NULL,
10
- "slug" TEXT NOT NULL,
11
- "zenstack_guard" BOOLEAN NOT NULL DEFAULT true,
12
-
13
- CONSTRAINT "Space_pkey" PRIMARY KEY ("id")
14
- );
15
-
16
- -- CreateTable
17
- CREATE TABLE "SpaceUser" (
18
- "id" TEXT NOT NULL,
19
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
20
- "updatedAt" TIMESTAMP(3) NOT NULL,
21
- "spaceId" TEXT NOT NULL,
22
- "userId" TEXT NOT NULL,
23
- "role" "SpaceUserRole" NOT NULL,
24
- "zenstack_guard" BOOLEAN NOT NULL DEFAULT true,
25
-
26
- CONSTRAINT "SpaceUser_pkey" PRIMARY KEY ("id")
27
- );
28
-
29
- -- CreateTable
30
- CREATE TABLE "User" (
31
- "id" TEXT NOT NULL,
32
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
33
- "updatedAt" TIMESTAMP(3) NOT NULL,
34
- "email" TEXT NOT NULL,
35
- "emailVerified" TIMESTAMP(3),
36
- "password" TEXT,
37
- "name" TEXT,
38
- "image" TEXT,
39
- "zenstack_guard" BOOLEAN NOT NULL DEFAULT true,
40
-
41
- CONSTRAINT "User_pkey" PRIMARY KEY ("id")
42
- );
43
-
44
- -- CreateTable
45
- CREATE TABLE "List" (
46
- "id" TEXT NOT NULL,
47
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
48
- "updatedAt" TIMESTAMP(3) NOT NULL,
49
- "spaceId" TEXT NOT NULL,
50
- "ownerId" TEXT NOT NULL,
51
- "title" TEXT NOT NULL,
52
- "private" BOOLEAN NOT NULL DEFAULT false,
53
- "zenstack_guard" BOOLEAN NOT NULL DEFAULT true,
54
-
55
- CONSTRAINT "List_pkey" PRIMARY KEY ("id")
56
- );
57
-
58
- -- CreateTable
59
- CREATE TABLE "Todo" (
60
- "id" TEXT NOT NULL,
61
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
62
- "updatedAt" TIMESTAMP(3) NOT NULL,
63
- "ownerId" TEXT NOT NULL,
64
- "listId" TEXT NOT NULL,
65
- "title" TEXT NOT NULL,
66
- "completedAt" TIMESTAMP(3),
67
- "zenstack_guard" BOOLEAN NOT NULL DEFAULT true,
68
-
69
- CONSTRAINT "Todo_pkey" PRIMARY KEY ("id")
70
- );
71
-
72
- -- CreateTable
73
- CREATE TABLE "Account" (
74
- "id" TEXT NOT NULL,
75
- "userId" TEXT NOT NULL,
76
- "type" TEXT NOT NULL,
77
- "provider" TEXT NOT NULL,
78
- "providerAccountId" TEXT NOT NULL,
79
- "refresh_token" TEXT,
80
- "access_token" TEXT,
81
- "expires_at" INTEGER,
82
- "token_type" TEXT,
83
- "scope" TEXT,
84
- "id_token" TEXT,
85
- "session_state" TEXT,
86
- "zenstack_guard" BOOLEAN NOT NULL DEFAULT true,
87
-
88
- CONSTRAINT "Account_pkey" PRIMARY KEY ("id")
89
- );
90
-
91
- -- CreateTable
92
- CREATE TABLE "Session" (
93
- "id" TEXT NOT NULL,
94
- "sessionToken" TEXT NOT NULL,
95
- "userId" TEXT NOT NULL,
96
- "expires" TIMESTAMP(3) NOT NULL,
97
- "zenstack_guard" BOOLEAN NOT NULL DEFAULT true,
98
-
99
- CONSTRAINT "Session_pkey" PRIMARY KEY ("id")
100
- );
101
-
102
- -- CreateTable
103
- CREATE TABLE "VerificationToken" (
104
- "identifier" TEXT NOT NULL,
105
- "token" TEXT NOT NULL,
106
- "expires" TIMESTAMP(3) NOT NULL,
107
- "zenstack_guard" BOOLEAN NOT NULL DEFAULT true
108
- );
109
-
110
- -- CreateIndex
111
- CREATE UNIQUE INDEX "Space_slug_key" ON "Space"("slug");
112
-
113
- -- CreateIndex
114
- CREATE UNIQUE INDEX "SpaceUser_userId_spaceId_key" ON "SpaceUser"("userId", "spaceId");
115
-
116
- -- CreateIndex
117
- CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
118
-
119
- -- CreateIndex
120
- CREATE UNIQUE INDEX "Account_provider_providerAccountId_key" ON "Account"("provider", "providerAccountId");
121
-
122
- -- CreateIndex
123
- CREATE UNIQUE INDEX "Session_sessionToken_key" ON "Session"("sessionToken");
124
-
125
- -- CreateIndex
126
- CREATE UNIQUE INDEX "VerificationToken_token_key" ON "VerificationToken"("token");
127
-
128
- -- CreateIndex
129
- CREATE UNIQUE INDEX "VerificationToken_identifier_token_key" ON "VerificationToken"("identifier", "token");
130
-
131
- -- AddForeignKey
132
- ALTER TABLE "SpaceUser" ADD CONSTRAINT "SpaceUser_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "Space"("id") ON DELETE CASCADE ON UPDATE CASCADE;
133
-
134
- -- AddForeignKey
135
- ALTER TABLE "SpaceUser" ADD CONSTRAINT "SpaceUser_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
136
-
137
- -- AddForeignKey
138
- ALTER TABLE "List" ADD CONSTRAINT "List_spaceId_fkey" FOREIGN KEY ("spaceId") REFERENCES "Space"("id") ON DELETE CASCADE ON UPDATE CASCADE;
139
-
140
- -- AddForeignKey
141
- ALTER TABLE "List" ADD CONSTRAINT "List_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
142
-
143
- -- AddForeignKey
144
- ALTER TABLE "Todo" ADD CONSTRAINT "Todo_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
145
-
146
- -- AddForeignKey
147
- ALTER TABLE "Todo" ADD CONSTRAINT "Todo_listId_fkey" FOREIGN KEY ("listId") REFERENCES "List"("id") ON DELETE CASCADE ON UPDATE CASCADE;
148
-
149
- -- AddForeignKey
150
- ALTER TABLE "Account" ADD CONSTRAINT "Account_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
151
-
152
- -- AddForeignKey
153
- ALTER TABLE "Session" ADD CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -1,23 +0,0 @@
1
- -- AlterTable
2
- ALTER TABLE "Account" ADD COLUMN "zenstack_transaction" TEXT;
3
-
4
- -- AlterTable
5
- ALTER TABLE "List" ADD COLUMN "zenstack_transaction" TEXT;
6
-
7
- -- AlterTable
8
- ALTER TABLE "Session" ADD COLUMN "zenstack_transaction" TEXT;
9
-
10
- -- AlterTable
11
- ALTER TABLE "Space" ADD COLUMN "zenstack_transaction" TEXT;
12
-
13
- -- AlterTable
14
- ALTER TABLE "SpaceUser" ADD COLUMN "zenstack_transaction" TEXT;
15
-
16
- -- AlterTable
17
- ALTER TABLE "Todo" ADD COLUMN "zenstack_transaction" TEXT;
18
-
19
- -- AlterTable
20
- ALTER TABLE "User" ADD COLUMN "zenstack_transaction" TEXT;
21
-
22
- -- AlterTable
23
- ALTER TABLE "VerificationToken" ADD COLUMN "zenstack_transaction" TEXT;
@@ -1,3 +0,0 @@
1
- # Please do not edit this file manually
2
- # It should be added in your version-control system (i.e. Git)
3
- provider = "postgresql"
@@ -1,126 +0,0 @@
1
- datasource db {
2
- provider="postgresql"
3
- url=env("DATABASE_URL")
4
- }
5
-
6
- generator client {
7
- provider = "prisma-client-js"
8
- output = "../node_modules/.zenstack/.prisma"
9
- previewFeatures = ["fieldReference", "interactiveTransactions"]
10
- }
11
-
12
- enum SpaceUserRole {
13
- USER
14
- ADMIN
15
- }
16
-
17
- model Space {
18
- id String @id() @default(uuid())
19
- createdAt DateTime @default(now())
20
- updatedAt DateTime @updatedAt()
21
- name String
22
- slug String @unique()
23
- members SpaceUser[]
24
- lists List[]
25
- zenstack_guard Boolean @default(true)
26
- zenstack_transaction String?
27
- }
28
-
29
- model SpaceUser {
30
- id String @id() @default(uuid())
31
- createdAt DateTime @default(now())
32
- updatedAt DateTime @updatedAt()
33
- space Space @relation(fields: [spaceId], references: [id], onDelete: Cascade)
34
- spaceId String
35
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
36
- userId String
37
- role SpaceUserRole
38
- zenstack_guard Boolean @default(true)
39
- zenstack_transaction String?
40
- @@unique([userId, spaceId])
41
- }
42
-
43
- model User {
44
- id String @id() @default(uuid())
45
- createdAt DateTime @default(now())
46
- updatedAt DateTime @updatedAt()
47
- email String @unique()
48
- emailVerified DateTime?
49
- password String?
50
- name String?
51
- spaces SpaceUser[]
52
- image String?
53
- lists List[]
54
- todos Todo[]
55
- accounts Account[]
56
- sessions Session[]
57
- zenstack_guard Boolean @default(true)
58
- zenstack_transaction String?
59
- }
60
-
61
- model List {
62
- id String @id() @default(uuid())
63
- createdAt DateTime @default(now())
64
- updatedAt DateTime @updatedAt()
65
- space Space @relation(fields: [spaceId], references: [id], onDelete: Cascade)
66
- spaceId String
67
- owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade)
68
- ownerId String
69
- title String
70
- private Boolean @default(false)
71
- todos Todo[]
72
- zenstack_guard Boolean @default(true)
73
- zenstack_transaction String?
74
- }
75
-
76
- model Todo {
77
- id String @id() @default(uuid())
78
- createdAt DateTime @default(now())
79
- updatedAt DateTime @updatedAt()
80
- owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade)
81
- ownerId String
82
- list List @relation(fields: [listId], references: [id], onDelete: Cascade)
83
- listId String
84
- title String
85
- completedAt DateTime?
86
- zenstack_guard Boolean @default(true)
87
- zenstack_transaction String?
88
- }
89
-
90
- model Account {
91
- id String @id() @default(uuid())
92
- userId String
93
- type String
94
- provider String
95
- providerAccountId String
96
- refresh_token String?
97
- access_token String?
98
- expires_at Int?
99
- token_type String?
100
- scope String?
101
- id_token String?
102
- session_state String?
103
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
104
- zenstack_guard Boolean @default(true)
105
- zenstack_transaction String?
106
- @@unique([provider, providerAccountId])
107
- }
108
-
109
- model Session {
110
- id String @id() @default(uuid())
111
- sessionToken String @unique()
112
- userId String
113
- expires DateTime
114
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
115
- zenstack_guard Boolean @default(true)
116
- zenstack_transaction String?
117
- }
118
-
119
- model VerificationToken {
120
- identifier String
121
- token String @unique()
122
- expires DateTime
123
- zenstack_guard Boolean @default(true)
124
- zenstack_transaction String?
125
- @@unique([identifier, token])
126
- }
@@ -1,161 +0,0 @@
1
- /*
2
- * Sample model for a collaborative Todo app
3
- */
4
-
5
- datasource db {
6
- provider = 'postgresql'
7
- url = env('DATABASE_URL')
8
- }
9
-
10
- enum SpaceUserRole {
11
- USER
12
- ADMIN
13
- }
14
-
15
- model Space {
16
- id String @id @default(uuid())
17
- createdAt DateTime @default(now())
18
- updatedAt DateTime @updatedAt
19
- name String @length(1, 100)
20
- slug String @unique @length(1, 20)
21
- members SpaceUser[]
22
- lists List[]
23
-
24
- // require login
25
- @@deny('all', auth() == null)
26
-
27
- // everyone can create a space
28
- @@allow('create', true)
29
-
30
- // any user in the space can read the space
31
- @@allow('read', members?[user == auth()])
32
-
33
- // space admin can update and delete
34
- @@allow('update,delete', members?[user == auth() && role == ADMIN])
35
- }
36
-
37
- model SpaceUser {
38
- id String @id @default(uuid())
39
- createdAt DateTime @default(now())
40
- updatedAt DateTime @updatedAt
41
- space Space @relation(fields:[spaceId], references: [id], onDelete: Cascade)
42
- spaceId String
43
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
44
- userId String
45
- role SpaceUserRole
46
-
47
- @@unique([userId, spaceId])
48
-
49
- // require login
50
- @@deny('all', auth() == null)
51
-
52
- // space admin can create/update/delete
53
- @@allow('create,update,delete', space.members?[user == auth() && role == ADMIN])
54
-
55
- // user can read entries for spaces which he's a member of
56
- @@allow('read', space.members?[user == auth()])
57
- }
58
-
59
- model User {
60
- id String @id @default(uuid())
61
- createdAt DateTime @default(now())
62
- updatedAt DateTime @updatedAt
63
- email String @unique @email
64
- emailVerified DateTime?
65
- password String?
66
- name String? @length(1, 100)
67
- spaces SpaceUser[]
68
- image String? @url
69
- lists List[]
70
- todos Todo[]
71
-
72
- // next-auth
73
- accounts Account[]
74
- sessions Session[]
75
-
76
- // can be created by anyone, even not logged in
77
- @@allow('create', true)
78
-
79
- // can be read by current user or users sharing any space
80
- @@allow('read', auth() == this || spaces?[space.members?[user == auth()]])
81
-
82
- // can only be updated and deleted by himeself
83
- @@allow('update,delete', auth() == this)
84
- }
85
-
86
- model List {
87
- id String @id @default(uuid())
88
- createdAt DateTime @default(now())
89
- updatedAt DateTime @updatedAt
90
- space Space @relation(fields: [spaceId], references: [id], onDelete: Cascade)
91
- spaceId String
92
- owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade)
93
- ownerId String
94
- title String @length(1, 20)
95
- private Boolean @default(false)
96
- todos Todo[]
97
-
98
- // require login
99
- @@deny('all', auth() == null)
100
-
101
- // can be read by owner or space members (only if not private)
102
- @@allow('read', owner == auth() || (space.members?[user == auth()] && !private))
103
-
104
- // can be created/updated/deleted by owner
105
- @@allow('create,update,delete', owner == auth() && space.members?[user == auth()])
106
- }
107
-
108
- model Todo {
109
- id String @id @default(uuid())
110
- createdAt DateTime @default(now())
111
- updatedAt DateTime @updatedAt
112
- owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade)
113
- ownerId String
114
- list List @relation(fields: [listId], references: [id], onDelete: Cascade)
115
- listId String
116
- title String
117
- completedAt DateTime?
118
-
119
- // require login
120
- @@deny('all', auth() == null)
121
-
122
- // owner has full access, also space members have full access (if the parent List is not private)
123
- @@allow('all', list.owner == auth())
124
- @@allow('all', list.space.members?[user == auth()] && !list.private)
125
- }
126
-
127
- // Models used by next-auth
128
-
129
- model Account {
130
- id String @id @default(uuid())
131
- userId String
132
- type String
133
- provider String
134
- providerAccountId String
135
- refresh_token String?
136
- access_token String?
137
- expires_at Int?
138
- token_type String?
139
- scope String?
140
- id_token String?
141
- session_state String?
142
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
143
-
144
- @@unique([provider, providerAccountId])
145
- }
146
-
147
- model Session {
148
- id String @id @default(uuid())
149
- sessionToken String @unique
150
- userId String
151
- expires DateTime
152
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
153
- }
154
-
155
- model VerificationToken {
156
- identifier String
157
- token String @unique
158
- expires DateTime
159
-
160
- @@unique([identifier, token])
161
- }
@@ -1,16 +0,0 @@
1
- /*
2
- * For a detailed explanation regarding each configuration property and type check, visit:
3
- * https://jestjs.io/docs/configuration
4
- */
5
- export default {
6
- // Automatically clear mock calls, instances, contexts and results before every test
7
- clearMocks: true,
8
-
9
- // A map from regular expressions to paths to transformers
10
- transform: { '^.+\\.tsx?$': 'ts-jest' },
11
-
12
- testTimeout: 30000,
13
-
14
- // explicitly specify moduel paths so that resolution from local dependencies work
15
- modulePaths: ['<rootDir>/tests/test-run/node_modules'],
16
- };