@wasp.sh/wasp-cli-darwin-x64-unknown 0.25.0 → 0.26.0

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 (255) hide show
  1. package/data/Cli/starters/README.md +2 -0
  2. package/data/Cli/starters/basic/README.md +3 -3
  3. package/data/Cli/starters/basic/src/tags/components/CreateTagForm.tsx +2 -3
  4. package/data/Cli/starters/basic/vite.config.ts +0 -3
  5. package/data/Cli/starters/minimal/package.json +4 -1
  6. package/data/Cli/starters/minimal/vite.config.ts +0 -3
  7. package/data/Cli/starters/skeleton/AGENTS.md +6 -0
  8. package/data/Cli/starters/skeleton/CLAUDE.md +6 -0
  9. package/data/Cli/starters/skeleton/tsconfig.src.json +1 -11
  10. package/data/Generator/libs/auth/wasp.sh-lib-auth-0.26.0.tgz +0 -0
  11. package/data/Generator/libs/sdk-core/node_modules/@wasp.sh/lib-auth/wasp.sh-lib-auth-0.26.0.tgz +0 -0
  12. package/data/Generator/libs/sdk-core/wasp.sh-lib-sdk-core-0.26.0.tgz +0 -0
  13. package/data/Generator/libs/vite-ssr/{wasp.sh-lib-vite-ssr-0.25.0.tgz → wasp.sh-lib-vite-ssr-0.26.0.tgz} +0 -0
  14. package/data/Generator/templates/Dockerfile +1 -0
  15. package/data/Generator/templates/sdk/wasp/api/index.ts +5 -86
  16. package/data/Generator/templates/sdk/wasp/auth/email/actions/login.ts +2 -2
  17. package/data/Generator/templates/sdk/wasp/auth/email/actions/passwordReset.ts +1 -1
  18. package/data/Generator/templates/sdk/wasp/auth/email/actions/signup.ts +7 -6
  19. package/data/Generator/templates/sdk/wasp/auth/email/actions/verifyEmail.ts +1 -1
  20. package/data/Generator/templates/sdk/wasp/auth/forms/Auth.tsx +12 -6
  21. package/data/Generator/templates/sdk/wasp/auth/forms/ForgotPassword.tsx +2 -1
  22. package/data/Generator/templates/sdk/wasp/auth/forms/Login.tsx +2 -1
  23. package/data/Generator/templates/sdk/wasp/auth/forms/ResetPassword.tsx +2 -1
  24. package/data/Generator/templates/sdk/wasp/auth/forms/Signup.tsx +5 -5
  25. package/data/Generator/templates/sdk/wasp/auth/forms/VerifyEmail.tsx +2 -1
  26. package/data/Generator/templates/sdk/wasp/auth/forms/internal/common/LoginSignupForm.tsx +34 -33
  27. package/data/Generator/templates/sdk/wasp/auth/forms/internal/email/DummyEmailSenderNotice.module.css +11 -0
  28. package/data/Generator/templates/sdk/wasp/auth/forms/internal/email/DummyEmailSenderNotice.tsx +17 -0
  29. package/data/Generator/templates/sdk/wasp/auth/forms/internal/email/ForgotPasswordForm.tsx +9 -13
  30. package/data/Generator/templates/sdk/wasp/auth/forms/internal/email/ResetPasswordForm.tsx +8 -9
  31. package/data/Generator/templates/sdk/wasp/auth/forms/internal/email/VerifyEmailForm.tsx +4 -8
  32. package/data/Generator/templates/sdk/wasp/auth/forms/internal/email/useEmail.ts +5 -5
  33. package/data/Generator/templates/sdk/wasp/auth/forms/internal/usernameAndPassword/useUsernameAndPassword.ts +6 -5
  34. package/data/Generator/templates/sdk/wasp/auth/forms/types.ts +0 -59
  35. package/data/Generator/templates/sdk/wasp/auth/helpers/_Provider.tsx +2 -2
  36. package/data/Generator/templates/sdk/wasp/auth/index.ts +1 -1
  37. package/data/Generator/templates/sdk/wasp/auth/logout.ts +1 -1
  38. package/data/Generator/templates/sdk/wasp/auth/providers/index.ts +4 -4
  39. package/data/Generator/templates/sdk/wasp/auth/providers/types.ts +20 -24
  40. package/data/Generator/templates/sdk/wasp/auth/useAuth.ts +5 -5
  41. package/data/Generator/templates/sdk/wasp/auth/user.ts +147 -14
  42. package/data/Generator/templates/sdk/wasp/auth/username/actions/login.ts +2 -2
  43. package/data/Generator/templates/sdk/wasp/auth/username/actions/signup.ts +6 -5
  44. package/data/Generator/templates/sdk/wasp/auth/validation.ts +1 -83
  45. package/data/Generator/templates/sdk/wasp/client/app/pages/OAuthCallback.tsx +8 -5
  46. package/data/Generator/templates/sdk/wasp/client/app/pages/createAuthRequiredPage.jsx +6 -4
  47. package/data/Generator/templates/sdk/wasp/client/app/router.tsx +2 -2
  48. package/data/Generator/templates/sdk/wasp/client/auth/ui.ts +2 -2
  49. package/data/Generator/templates/sdk/wasp/client/auth/username.ts +2 -2
  50. package/data/Generator/templates/sdk/wasp/client/config.ts +1 -6
  51. package/data/Generator/templates/sdk/wasp/client/crud/_crud.ts +129 -75
  52. package/data/Generator/templates/sdk/wasp/client/env/schema.ts +14 -7
  53. package/data/Generator/templates/sdk/wasp/client/env.ts +4 -3
  54. package/data/Generator/templates/sdk/wasp/client/index.ts +3 -12
  55. package/data/Generator/templates/sdk/wasp/client/operations/actions/core.ts +14 -10
  56. package/data/Generator/templates/sdk/wasp/client/operations/actions/index.ts +7 -4
  57. package/data/Generator/templates/sdk/wasp/client/operations/index.ts +5 -5
  58. package/data/Generator/templates/sdk/wasp/client/operations/internal/index.ts +1 -8
  59. package/data/Generator/templates/sdk/wasp/client/operations/queries/core.ts +13 -55
  60. package/data/Generator/templates/sdk/wasp/client/operations/queries/index.ts +7 -7
  61. package/data/Generator/templates/sdk/wasp/client/router/Link.tsx +8 -8
  62. package/data/Generator/templates/sdk/wasp/client/router/NavLink.tsx +8 -8
  63. package/data/Generator/templates/sdk/wasp/client/router/index.ts +15 -15
  64. package/data/Generator/templates/sdk/wasp/client/test/index.ts +2 -1
  65. package/data/Generator/templates/sdk/wasp/client/test/vitest/helpers.tsx +5 -36
  66. package/data/Generator/templates/sdk/wasp/client/vite/index.ts +2 -1
  67. package/data/Generator/templates/sdk/wasp/client/vite/plugins/virtualUserModules.ts +43 -0
  68. package/data/Generator/templates/sdk/wasp/client/vite/plugins/{virtualModules.ts → virtualWaspModules.ts} +4 -4
  69. package/data/Generator/templates/sdk/wasp/client/vite/plugins/wasp.ts +17 -14
  70. package/data/Generator/templates/sdk/wasp/client/vite/plugins/waspConfig.ts +60 -18
  71. package/data/Generator/templates/sdk/wasp/client/vite/virtual-files/files/client-entry.tsx +1 -1
  72. package/data/Generator/templates/sdk/wasp/client/vite/virtual-files/files/routes.tsx +1 -1
  73. package/data/Generator/templates/sdk/wasp/client/vite/virtual-files/files/ssr-entry.tsx +1 -1
  74. package/data/Generator/templates/sdk/wasp/client/webSocket/WebSocketProvider.tsx +3 -3
  75. package/data/Generator/templates/sdk/wasp/client/webSocket/index.ts +1 -1
  76. package/data/Generator/templates/sdk/wasp/core/serialization/index.ts +2 -47
  77. package/data/Generator/templates/sdk/wasp/core/serialization/prisma.ts +0 -1
  78. package/data/Generator/templates/sdk/wasp/entities/index.ts +6 -6
  79. package/data/Generator/templates/sdk/wasp/env/index.ts +1 -9
  80. package/data/Generator/templates/sdk/wasp/package.json +150 -104
  81. package/data/Generator/templates/sdk/wasp/server/_types/index.ts +8 -10
  82. package/data/Generator/templates/sdk/wasp/server/_types/taggedEntities.ts +4 -4
  83. package/data/Generator/templates/sdk/wasp/server/api/index.ts +5 -5
  84. package/data/Generator/templates/sdk/wasp/server/auth/email/index.ts +2 -12
  85. package/data/Generator/templates/sdk/wasp/server/auth/email/utils.ts +8 -30
  86. package/data/Generator/templates/sdk/wasp/server/auth/hooks.ts +5 -2
  87. package/data/Generator/templates/sdk/wasp/server/auth/index.ts +3 -3
  88. package/data/Generator/templates/sdk/wasp/{auth → server/auth}/jwt.ts +1 -1
  89. package/data/Generator/templates/sdk/wasp/{auth → server/auth}/lucia.ts +4 -4
  90. package/data/Generator/templates/sdk/wasp/server/auth/oauth/oneTimeCode.ts +1 -1
  91. package/data/Generator/templates/sdk/wasp/server/auth/oauth/providers/discord.ts +1 -1
  92. package/data/Generator/templates/sdk/wasp/server/auth/oauth/providers/github.ts +1 -1
  93. package/data/Generator/templates/sdk/wasp/server/auth/oauth/providers/google.ts +1 -1
  94. package/data/Generator/templates/sdk/wasp/server/auth/oauth/providers/keycloak.ts +1 -1
  95. package/data/Generator/templates/sdk/wasp/server/auth/oauth/providers/microsoft.ts +1 -1
  96. package/data/Generator/templates/sdk/wasp/server/auth/oauth/providers/slack.ts +1 -1
  97. package/data/Generator/templates/sdk/wasp/{auth → server/auth}/session.ts +17 -6
  98. package/data/Generator/templates/sdk/wasp/{auth → server/auth}/utils.ts +40 -183
  99. package/data/Generator/templates/sdk/wasp/server/config.ts +1 -1
  100. package/data/Generator/templates/sdk/wasp/{core → server/core}/auth.ts +3 -3
  101. package/data/Generator/templates/sdk/wasp/server/crud/_operationTypes.ts +16 -63
  102. package/data/Generator/templates/sdk/wasp/server/dbClient.ts +15 -17
  103. package/data/Generator/templates/sdk/wasp/server/email/core/helpers.ts +3 -20
  104. package/data/Generator/templates/sdk/wasp/server/email/core/providers/dummy.ts +2 -2
  105. package/data/Generator/templates/sdk/wasp/server/email/core/providers/resend.ts +2 -1
  106. package/data/Generator/templates/sdk/wasp/server/email/core/providers/smtp.ts +2 -1
  107. package/data/Generator/templates/sdk/wasp/server/email/core/types.ts +2 -45
  108. package/data/Generator/templates/sdk/wasp/server/email/index.ts +1 -1
  109. package/data/Generator/templates/sdk/wasp/server/env.ts +20 -11
  110. package/data/Generator/templates/sdk/wasp/server/index.ts +3 -3
  111. package/data/Generator/templates/sdk/wasp/server/jobs/_job.ts +1 -1
  112. package/data/Generator/templates/sdk/wasp/server/jobs/core/pgBoss/index.ts +1 -1
  113. package/data/Generator/templates/sdk/wasp/server/jobs/core/pgBoss/pgBossJob.ts +4 -4
  114. package/data/Generator/templates/sdk/wasp/server/jobs/core/pgBoss/types.ts +1 -1
  115. package/data/Generator/templates/sdk/wasp/server/middleware/index.ts +1 -1
  116. package/data/Generator/templates/sdk/wasp/server/operations/actions/index.ts +14 -8
  117. package/data/Generator/templates/sdk/wasp/server/operations/actions/types.ts +5 -5
  118. package/data/Generator/templates/sdk/wasp/server/operations/queries/index.ts +14 -8
  119. package/data/Generator/templates/sdk/wasp/server/operations/queries/types.ts +5 -5
  120. package/data/Generator/templates/sdk/wasp/server/operations/wrappers.ts +40 -14
  121. package/data/Generator/templates/sdk/wasp/server/types/index.ts +1 -11
  122. package/data/Generator/templates/sdk/wasp/server/utils.ts +5 -20
  123. package/data/Generator/templates/sdk/wasp/server/webSocket/index.ts +7 -7
  124. package/data/Generator/templates/sdk/wasp/tsconfig.json +20 -46
  125. package/data/Generator/templates/sdk/wasp/types/index.ts +8 -0
  126. package/data/Generator/templates/sdk/wasp/types/register.ts +21 -0
  127. package/data/Generator/templates/sdk/wasp/vite-env.d.ts +0 -9
  128. package/data/Generator/templates/sdk/wasp/wasp-ssr.d.ts +8 -0
  129. package/data/Generator/templates/sdk/wasp/wasp-user-virtual-modules.d.ts +20 -0
  130. package/data/Generator/templates/server/package.json +2 -1
  131. package/data/Generator/templates/server/rollup.config.js +2 -43
  132. package/data/Generator/templates/server/rollup.dbSeed.config.js +3 -0
  133. package/data/Generator/templates/server/src/app.js +2 -2
  134. package/data/Generator/templates/server/src/auth/providers/config/email.ts +5 -5
  135. package/data/Generator/templates/server/src/auth/providers/email/login.ts +4 -4
  136. package/data/Generator/templates/server/src/auth/providers/email/requestPasswordReset.ts +4 -4
  137. package/data/Generator/templates/server/src/auth/providers/email/resetPassword.ts +13 -5
  138. package/data/Generator/templates/server/src/auth/providers/email/signup.ts +29 -18
  139. package/data/Generator/templates/server/src/auth/providers/email/verifyEmail.ts +7 -2
  140. package/data/Generator/templates/server/src/auth/providers/oauth/cookies.ts +5 -1
  141. package/data/Generator/templates/server/src/auth/providers/oauth/handler.ts +1 -1
  142. package/data/Generator/templates/server/src/auth/providers/oauth/oneTimeCode.ts +2 -2
  143. package/data/Generator/templates/server/src/auth/providers/oauth/state.ts +55 -13
  144. package/data/Generator/templates/server/src/auth/providers/oauth/user.ts +6 -3
  145. package/data/Generator/templates/server/src/auth/providers/username/login.ts +4 -4
  146. package/data/Generator/templates/server/src/auth/providers/username/signup.ts +12 -4
  147. package/data/Generator/templates/server/src/createRollupBundle.js +47 -0
  148. package/data/Generator/templates/server/src/crud/_operations.ts +16 -16
  149. package/data/Generator/templates/server/src/plugins/virtualUserModules.js +40 -0
  150. package/data/Generator/templates/server/src/routes/apis/index.ts +3 -3
  151. package/data/Generator/templates/server/src/routes/auth/index.js +1 -1
  152. package/data/Generator/templates/server/src/routes/auth/logout.ts +2 -2
  153. package/data/Generator/templates/server/src/routes/crud/_crud.ts +1 -1
  154. package/data/Generator/templates/server/src/routes/index.js +18 -18
  155. package/data/Generator/templates/server/src/routes/operations/index.js +1 -1
  156. package/data/Generator/templates/server/src/webSocket/initialization.ts +1 -1
  157. package/data/Generator/templates/server/tsconfig.json +7 -13
  158. package/data/Generator/templates/types/app/sdk/register.ts +57 -0
  159. package/data/packages/deploy/dist/common/cliVersion.js +17 -0
  160. package/data/packages/deploy/dist/common/waspProject.js +1 -1
  161. package/data/packages/deploy/dist/common/zx.js +24 -6
  162. package/data/packages/deploy/dist/providers/fly/commands/createDb/createDb.js +13 -5
  163. package/data/packages/deploy/dist/providers/fly/flyCli.js +29 -17
  164. package/data/packages/deploy/dist/providers/fly/index.js +16 -8
  165. package/data/packages/deploy/dist/providers/railway/commands/setup/setup.js +19 -31
  166. package/data/packages/deploy/dist/providers/railway/index.js +11 -2
  167. package/data/packages/deploy/dist/providers/railway/jsonOutputSchemas.js +19 -34
  168. package/data/packages/deploy/dist/providers/railway/railwayCli.js +11 -20
  169. package/data/packages/deploy/dist/providers/railway/railwayEnvironment/cli.js +20 -0
  170. package/data/packages/deploy/dist/providers/railway/railwayProject/RailwayProject.js +4 -1
  171. package/data/packages/deploy/dist/providers/railway/railwayProject/cli.js +6 -14
  172. package/data/packages/deploy/dist/providers/railway/railwayService/database.js +88 -0
  173. package/data/packages/deploy/dist/providers/railway/railwayService/deployment.js +12 -25
  174. package/data/packages/deploy/dist/providers/railway/railwayService/nameGenerator.js +5 -4
  175. package/data/packages/deploy/dist/providers/railway/railwayService/serviceInstance.js +48 -0
  176. package/data/packages/deploy/dist/providers/railway/railwayService/url.js +9 -30
  177. package/data/packages/deploy/package-lock.json +2 -2
  178. package/data/packages/deploy/package.json +1 -1
  179. package/data/packages/prisma/package-lock.json +2 -2
  180. package/data/packages/prisma/package.json +1 -1
  181. package/data/packages/spec/dist/__tests__/spec/mapApp.unit.test.js +19 -15
  182. package/data/packages/spec/dist/__tests__/spec/tsAppSpec.test-d.js +6 -0
  183. package/data/packages/spec/dist/src/appSpec.d.ts +15 -2
  184. package/data/packages/spec/dist/src/appSpec.d.ts.map +1 -1
  185. package/data/packages/spec/dist/src/spec/mapper/app.d.ts +1 -0
  186. package/data/packages/spec/dist/src/spec/mapper/app.d.ts.map +1 -1
  187. package/data/packages/spec/dist/src/spec/mapper/app.js +8 -2
  188. package/data/packages/spec/dist/src/spec/mapper/context.js +4 -4
  189. package/data/packages/spec/dist/src/spec/mapper/specElements.js +9 -9
  190. package/data/packages/spec/dist/src/spec/publicApi/constructors.d.ts +11 -11
  191. package/data/packages/spec/dist/src/spec/publicApi/constructors.js +11 -11
  192. package/data/packages/spec/dist/src/spec/publicApi/register.d.ts +1 -1
  193. package/data/packages/spec/dist/src/spec/publicApi/waspSpec.d.ts +58 -38
  194. package/data/packages/spec/dist/src/spec/publicApi/waspSpec.d.ts.map +1 -1
  195. package/data/packages/spec/package-lock.json +2 -2
  196. package/data/packages/spec/package.json +1 -1
  197. package/data/packages/studio/package-lock.json +15 -23
  198. package/data/packages/studio/package.json +2 -2
  199. package/package.json +1 -1
  200. package/wasp-bin +0 -0
  201. package/data/Generator/libs/auth/wasp.sh-lib-auth-0.25.0.tgz +0 -0
  202. package/data/Generator/templates/sdk/wasp/api/events.ts +0 -11
  203. package/data/Generator/templates/sdk/wasp/auth/email/index.ts +0 -5
  204. package/data/Generator/templates/sdk/wasp/auth/forms/internal/Form.module.css +0 -99
  205. package/data/Generator/templates/sdk/wasp/auth/forms/internal/Form.tsx +0 -74
  206. package/data/Generator/templates/sdk/wasp/auth/forms/internal/Message.module.css +0 -22
  207. package/data/Generator/templates/sdk/wasp/auth/forms/internal/Message.tsx +0 -34
  208. package/data/Generator/templates/sdk/wasp/auth/forms/internal/auth-styles.css +0 -30
  209. package/data/Generator/templates/sdk/wasp/auth/forms/internal/social/SocialButton.module.css +0 -33
  210. package/data/Generator/templates/sdk/wasp/auth/forms/internal/social/SocialButton.tsx +0 -14
  211. package/data/Generator/templates/sdk/wasp/auth/forms/internal/social/SocialIcons.module.css +0 -4
  212. package/data/Generator/templates/sdk/wasp/auth/forms/internal/social/SocialIcons.tsx +0 -85
  213. package/data/Generator/templates/sdk/wasp/auth/forms/internal/util.ts +0 -16
  214. package/data/Generator/templates/sdk/wasp/auth/helpers/user.ts +0 -15
  215. package/data/Generator/templates/sdk/wasp/auth/responseSchemas.ts +0 -10
  216. package/data/Generator/templates/sdk/wasp/auth/types.ts +0 -2
  217. package/data/Generator/templates/sdk/wasp/auth/username/index.ts +0 -2
  218. package/data/Generator/templates/sdk/wasp/client/app/components/DefaultRootErrorBoundary.tsx +0 -16
  219. package/data/Generator/templates/sdk/wasp/client/app/components/FullPageWrapper.tsx +0 -21
  220. package/data/Generator/templates/sdk/wasp/client/app/components/Loader.module.css +0 -37
  221. package/data/Generator/templates/sdk/wasp/client/app/components/Loader.tsx +0 -12
  222. package/data/Generator/templates/sdk/wasp/client/app/components/Message.tsx +0 -86
  223. package/data/Generator/templates/sdk/wasp/client/crud/operationsHelpers.ts +0 -21
  224. package/data/Generator/templates/sdk/wasp/client/hooks.ts +0 -19
  225. package/data/Generator/templates/sdk/wasp/client/operations/hooks.ts +0 -347
  226. package/data/Generator/templates/sdk/wasp/client/operations/internal/resources.js +0 -85
  227. package/data/Generator/templates/sdk/wasp/client/operations/internal/updateHandlersMap.js +0 -37
  228. package/data/Generator/templates/sdk/wasp/client/operations/queryClient.ts +0 -34
  229. package/data/Generator/templates/sdk/wasp/client/operations/rpc.ts +0 -96
  230. package/data/Generator/templates/sdk/wasp/client/router/linkHelpers.ts +0 -48
  231. package/data/Generator/templates/sdk/wasp/client/router/types.ts +0 -98
  232. package/data/Generator/templates/sdk/wasp/client/vite/plugins/detectServerImports.ts +0 -50
  233. package/data/Generator/templates/sdk/wasp/client/vite/plugins/envFile.ts +0 -112
  234. package/data/Generator/templates/sdk/wasp/client/vite/plugins/typescriptCheck.ts +0 -36
  235. package/data/Generator/templates/sdk/wasp/client/vite/plugins/validateEnv.ts +0 -88
  236. package/data/Generator/templates/sdk/wasp/client/vite/virtual-files/resolver.ts +0 -35
  237. package/data/Generator/templates/sdk/wasp/core/serialization/custom-register.ts +0 -21
  238. package/data/Generator/templates/sdk/wasp/core/storage.ts +0 -73
  239. package/data/Generator/templates/sdk/wasp/env/validation.ts +0 -44
  240. package/data/Generator/templates/sdk/wasp/server/HttpError.ts +0 -30
  241. package/data/Generator/templates/sdk/wasp/server/auth/oauth/provider.ts +0 -20
  242. package/data/Generator/templates/sdk/wasp/server/auth/user.ts +0 -154
  243. package/data/Generator/templates/sdk/wasp/server/auth/username.ts +0 -1
  244. package/data/Generator/templates/sdk/wasp/server/jobs/core/job.ts +0 -28
  245. package/data/Generator/templates/sdk/wasp/server/middleware/globalMiddleware.ts +0 -8
  246. package/data/Generator/templates/sdk/wasp/universal/ansiColors.ts +0 -58
  247. package/data/Generator/templates/sdk/wasp/universal/predicates.ts +0 -3
  248. package/data/Generator/templates/sdk/wasp/universal/types.ts +0 -74
  249. package/data/Generator/templates/sdk/wasp/universal/url.ts +0 -9
  250. package/data/Generator/templates/sdk/wasp/universal/validators.ts +0 -21
  251. package/data/packages/ts-inspect/dist/exports.js +0 -82
  252. package/data/packages/ts-inspect/dist/index.js +0 -28
  253. package/data/packages/ts-inspect/package-lock.json +0 -4724
  254. package/data/packages/ts-inspect/package.json +0 -31
  255. /package/data/Generator/templates/sdk/wasp/{auth → server/auth}/password.ts +0 -0
@@ -9,7 +9,7 @@ import { getSignupRoute } from "../email/signup.js";
9
9
  import { getRequestPasswordResetRoute } from "../email/requestPasswordReset.js";
10
10
  import { resetPassword } from "../email/resetPassword.js";
11
11
  import { verifyEmail } from "../email/verifyEmail.js";
12
- import { GetVerificationEmailContentFn, GetPasswordResetEmailContentFn } from "wasp/server/auth/email";
12
+ import { GetVerificationEmailContentFn, GetPasswordResetEmailContentFn } from "wasp/server/auth";
13
13
  import { defineHandler } from "wasp/server/utils";
14
14
  import { env } from "wasp/server";
15
15
 
@@ -52,8 +52,8 @@ const _waspGetPasswordResetEmailContent: GetPasswordResetEmailContentFn = ({ pas
52
52
  {=/ getPasswordResetEmailContent.isDefined =}
53
53
 
54
54
  const fromField: EmailFromField = {
55
- name: '{= fromField.name =}',
56
- email: '{= fromField.email =}',
55
+ name: {=& fromField.name =},
56
+ email: {=& fromField.email =},
57
57
  };
58
58
 
59
59
  const config: ProviderConfig = {
@@ -68,7 +68,7 @@ const config: ProviderConfig = {
68
68
  const signupRoute = defineHandler(getSignupRoute({
69
69
  userSignupFields: _waspUserSignupFields,
70
70
  fromField,
71
- clientRoute: '{= emailVerificationClientRoute =}',
71
+ clientRoute: {=& emailVerificationClientRoute =},
72
72
  getVerificationEmailContent: _waspGetVerificationEmailContent,
73
73
  {=# isDevelopment =}
74
74
  isEmailAutoVerified: env.SKIP_EMAIL_VERIFICATION_IN_DEV,
@@ -81,7 +81,7 @@ const config: ProviderConfig = {
81
81
 
82
82
  const requestPasswordResetRoute = defineHandler(getRequestPasswordResetRoute({
83
83
  fromField,
84
- clientRoute: '{= passwordResetClientRoute =}',
84
+ clientRoute: {=& passwordResetClientRoute =},
85
85
  getPasswordResetEmailContent: _waspGetPasswordResetEmailContent,
86
86
  }));
87
87
  router.post('/request-password-reset', requestPasswordResetRoute);
@@ -1,13 +1,13 @@
1
1
  import { Request, Response } from 'express';
2
- import { createInvalidCredentialsError } from 'wasp/auth/utils'
3
- import { verifyPassword } from 'wasp/auth/password'
2
+ import { createInvalidCredentialsError } from 'wasp/server/auth/utils'
3
+ import { verifyPassword } from 'wasp/server/auth/password'
4
4
  import {
5
5
  createProviderId,
6
6
  findAuthIdentity,
7
7
  findAuthWithUserBy,
8
8
  getProviderDataWithPassword,
9
- } from 'wasp/auth/utils'
10
- import { createSession } from 'wasp/auth/session'
9
+ } from 'wasp/server/auth/utils'
10
+ import { createSession } from 'wasp/server/auth/session'
11
11
  import { ensureValidEmail, ensurePasswordIsPresent } from 'wasp/auth/validation'
12
12
  import { onBeforeLoginHook, onAfterLoginHook } from '../../hooks.js';
13
13
 
@@ -4,15 +4,15 @@ import {
4
4
  findAuthIdentity,
5
5
  doFakeWork,
6
6
  getProviderDataWithPassword,
7
- } from 'wasp/auth/utils';
7
+ } from 'wasp/server/auth/utils';
8
8
  import {
9
+ GetPasswordResetEmailContentFn,
9
10
  createPasswordResetLink,
10
11
  sendPasswordResetEmail,
11
12
  isEmailResendAllowed,
12
- } from "wasp/server/auth/email/utils";
13
+ } from "wasp/server/auth";
13
14
  import { ensureValidEmail } from 'wasp/auth/validation';
14
15
  import type { EmailFromField } from 'wasp/server/email/core/types';
15
- import { GetPasswordResetEmailContentFn } from 'wasp/server/auth/email';
16
16
  import { HttpError } from 'wasp/server';
17
17
 
18
18
  export function getRequestPasswordResetRoute({
@@ -64,7 +64,7 @@ export function getRequestPasswordResetRoute({
64
64
  ...getPasswordResetEmailContent({ passwordResetLink }),
65
65
  },
66
66
  );
67
- } catch (e: any) {
67
+ } catch (e: unknown) {
68
68
  console.error("Failed to send password reset email:", e);
69
69
  throw new HttpError(500, "Failed to send password reset email.");
70
70
  }
@@ -4,8 +4,9 @@ import {
4
4
  findAuthIdentity,
5
5
  updateAuthIdentityProviderData,
6
6
  getProviderDataWithPassword,
7
- } from 'wasp/auth/utils';
8
- import { validateJWT } from 'wasp/auth/jwt'
7
+ } from 'wasp/server/auth/utils';
8
+ import { validateJWT } from 'wasp/server/auth/jwt'
9
+ import { invalidateAllSessionsForAuthId } from 'wasp/server/auth/session'
9
10
  import { ensureTokenIsPresent, ensurePasswordIsPresent, ensureValidPassword } from 'wasp/auth/validation';
10
11
  import { HttpError } from 'wasp/server';
11
12
 
@@ -14,7 +15,9 @@ export async function resetPassword(
14
15
  res: Response,
15
16
  ): Promise<void> {
16
17
  const args = req.body ?? {};
17
- ensureValidArgs(args);
18
+ // NOTE: The token is validated before the password so that an unauthenticated
19
+ // caller with an invalid token can't learn the deployment's password policy.
20
+ ensureTokenIsPresent(args);
18
21
 
19
22
  const { token, password } = args;
20
23
  const { email } = await validateJWT<{ email: string }>(token)
@@ -22,6 +25,8 @@ export async function resetPassword(
22
25
  throw new HttpError(400, "Password reset failed, invalid token");
23
26
  });
24
27
 
28
+ ensureValidPasswordArg(args);
29
+
25
30
  const providerId = createProviderId('email', email);
26
31
  const authIdentity = await findAuthIdentity(providerId);
27
32
  if (!authIdentity) {
@@ -38,11 +43,14 @@ export async function resetPassword(
38
43
  hashedPassword: password,
39
44
  });
40
45
 
46
+ // Changing the password invalidates all the existing sessions, so that
47
+ // somebody who got hold of a session can't keep using it.
48
+ await invalidateAllSessionsForAuthId(authIdentity.authId);
49
+
41
50
  res.json({ success: true });
42
51
  };
43
52
 
44
- function ensureValidArgs(args: object): void {
45
- ensureTokenIsPresent(args);
53
+ function ensureValidPasswordArg(args: object): void {
46
54
  ensurePasswordIsPresent(args);
47
55
  ensureValidPassword(args);
48
56
  }
@@ -1,28 +1,28 @@
1
1
  import { Request, Response } from 'express'
2
2
  import type { UserSignupFields } from 'wasp/auth/providers/types'
3
- import {
4
- createProviderId,
5
- createUser,
6
- deleteUserByAuthId,
7
- doFakeWork,
8
- findAuthIdentity,
9
- getProviderDataWithPassword,
10
- rethrowPossibleAuthError,
11
- sanitizeAndSerializeProviderData,
12
- validateAndGetUserFields,
13
- } from 'wasp/auth/utils'
14
3
  import {
15
4
  ensurePasswordIsPresent,
16
5
  ensureValidEmail,
17
6
  ensureValidPassword,
18
7
  } from 'wasp/auth/validation'
19
8
  import { HttpError } from 'wasp/server'
20
- import { GetVerificationEmailContentFn } from 'wasp/server/auth/email'
21
9
  import {
10
+ GetVerificationEmailContentFn,
22
11
  createEmailVerificationLink,
23
12
  isEmailResendAllowed,
24
13
  sendEmailVerificationEmail,
25
- } from 'wasp/server/auth/email/utils'
14
+ } from 'wasp/server/auth'
15
+ import {
16
+ createProviderId,
17
+ createUser,
18
+ deleteUserByAuthId,
19
+ doFakeWork,
20
+ findAuthIdentity,
21
+ getProviderDataWithPassword,
22
+ rethrowPossibleAuthError,
23
+ sanitizeAndSerializeProviderData,
24
+ validateAndGetUserFields,
25
+ } from 'wasp/server/auth/utils'
26
26
  import { EmailFromField } from 'wasp/server/email/core/types'
27
27
  import { onAfterSignupHook, onBeforeSignupHook } from '../../hooks.js'
28
28
 
@@ -91,7 +91,7 @@ export function getSignupRoute({
91
91
  // we are not checking if the email was sent or not!
92
92
  const { isResendAllowed, timeLeft } = isEmailResendAllowed(
93
93
  providerData,
94
- 'passwordResetSentAt',
94
+ 'emailVerificationSentAt',
95
95
  )
96
96
  if (!isResendAllowed) {
97
97
  throw new HttpError(
@@ -107,6 +107,14 @@ export function getSignupRoute({
107
107
  }
108
108
  }
109
109
 
110
+ // The hook runs first so it can veto the signup (by throwing) before the
111
+ // developer's `userSignupFields` getters run.
112
+ try {
113
+ await onBeforeSignupHook({ req, providerId })
114
+ } catch (e: unknown) {
115
+ rethrowPossibleAuthError(e)
116
+ }
117
+
110
118
  const userFields = await validateAndGetUserFields(fields, userSignupFields)
111
119
 
112
120
  const newUserProviderData = await sanitizeAndSerializeProviderData<'email'>(
@@ -119,7 +127,6 @@ export function getSignupRoute({
119
127
  )
120
128
 
121
129
  try {
122
- await onBeforeSignupHook({ req, providerId })
123
130
  const user = await createUser(
124
131
  providerId,
125
132
  newUserProviderData,
@@ -139,14 +146,18 @@ export function getSignupRoute({
139
146
  return
140
147
  }
141
148
 
149
+ // We send the verification link to the normalized address that we stored.
150
+ // This way the address that proves ownership is the same one password reset later
151
+ // sends the reset link to.
152
+ const email = providerId.providerUserId
142
153
  const verificationLink = await createEmailVerificationLink(
143
- fields.email,
154
+ email,
144
155
  clientRoute,
145
156
  )
146
157
  try {
147
- await sendEmailVerificationEmail(fields.email, {
158
+ await sendEmailVerificationEmail(email, {
148
159
  from: fromField,
149
- to: fields.email,
160
+ to: email,
150
161
  ...getVerificationEmailContent({ verificationLink }),
151
162
  })
152
163
  } catch (e: unknown) {
@@ -1,12 +1,13 @@
1
1
  import { Request, Response } from 'express';
2
- import { validateJWT } from 'wasp/auth/jwt';
2
+ import { validateJWT } from 'wasp/server/auth/jwt';
3
3
  import {
4
+ createInvalidCredentialsError,
4
5
  createProviderId,
5
6
  findAuthIdentity,
6
7
  findAuthWithUserBy,
7
8
  getProviderDataWithPassword,
8
9
  updateAuthIdentityProviderData,
9
- } from 'wasp/auth/utils';
10
+ } from 'wasp/server/auth/utils';
10
11
  import { HttpError } from 'wasp/server';
11
12
  import { onAfterEmailVerifiedHook } from '../../hooks.js';
12
13
 
@@ -35,6 +36,10 @@ export async function verifyEmail(
35
36
 
36
37
  const auth = await findAuthWithUserBy({ id: authIdentity.authId })
37
38
 
39
+ if (auth === null) {
40
+ throw createInvalidCredentialsError();
41
+ }
42
+
38
43
  await onAfterEmailVerifiedHook({ req, email, user: auth.user });
39
44
 
40
45
  res.json({ success: true });
@@ -19,6 +19,10 @@ export function setOAuthCookieValue(
19
19
  res.cookie(cookieName, value, {
20
20
  httpOnly: true,
21
21
  secure: !config.isDevelopment,
22
+ // The OAuth callback is a top-level GET navigation, which `lax` permits.
23
+ // We set it explicitly because an omitted `sameSite` is not `lax` in every
24
+ // browser.
25
+ sameSite: "lax",
22
26
  path: "/",
23
27
  maxAge: 60 * 60 * 1000, // 1 hour
24
28
  });
@@ -28,7 +32,7 @@ export function getOAuthCookieValue(
28
32
  provider: ProviderConfig,
29
33
  req: ExpressRequest,
30
34
  fieldName: OAuthStateFieldName,
31
- ): string {
35
+ ): string | undefined {
32
36
  const cookieName = `${provider.id}_${fieldName}`;
33
37
  const cookies = parseCookies(req.headers.cookie ?? "");
34
38
  return cookies.get(cookieName);
@@ -1,7 +1,7 @@
1
1
  import { Router } from 'express'
2
2
 
3
3
  import { defineHandler, redirect } from 'wasp/server/utils'
4
- import { rethrowPossibleAuthError } from 'wasp/auth/utils'
4
+ import { rethrowPossibleAuthError } from 'wasp/server/auth/utils'
5
5
  import {
6
6
  type UserSignupFields,
7
7
  type ProviderConfig,
@@ -2,8 +2,8 @@ import { Router } from "express";
2
2
 
3
3
  import { HttpError } from 'wasp/server';
4
4
  import { defineHandler } from 'wasp/server/utils';
5
- import { findAuthWithUserBy } from 'wasp/auth/utils'
6
- import { createSession } from 'wasp/auth/session'
5
+ import { findAuthWithUserBy } from 'wasp/server/auth/utils'
6
+ import { createSession } from 'wasp/server/auth/session'
7
7
  import { exchangeCodeForTokenPath, tokenStore } from "wasp/server/auth";
8
8
 
9
9
  export function setupOneTimeCodeRoute(router: Router) {
@@ -5,6 +5,7 @@ import {
5
5
  import * as arctic from 'arctic';
6
6
 
7
7
  import type { ProviderConfig } from 'wasp/auth/providers/types';
8
+ import { HttpError } from 'wasp/server';
8
9
 
9
10
  import { setOAuthCookieValue, getOAuthCookieValue } from './cookies.js';
10
11
 
@@ -68,15 +69,16 @@ export function validateAndGetOAuthState<OT extends OAuthType>({
68
69
  provider: ProviderConfig,
69
70
  req: ExpressRequest
70
71
  }): OAuthStateWithCodeFor<OT> {
71
- const state: OAuthStateWithCodeFor<OT> = {
72
- ...getCode(req),
72
+ const state: OAuthStateFor<OT> = {
73
73
  ...getState(req),
74
74
  ...(oAuthType === 'OAuth2WithPKCE' && getCodeVerifier(provider, req)),
75
75
  };
76
76
 
77
+ // We validate the state before reading anything else from the callback,
78
+ // so only a callback for a login this browser started gets handled.
77
79
  validateOAuthState(provider, req, state);
78
80
 
79
- return state;
81
+ return { ...state, ...getCode(provider, req) };
80
82
  }
81
83
 
82
84
  function storeOAuthState(
@@ -93,22 +95,27 @@ function storeOAuthState(
93
95
  function validateOAuthState(
94
96
  provider: ProviderConfig,
95
97
  req: ExpressRequest,
96
- state: OAuthStateWithCodeFor<OAuthType>
98
+ state: OAuthStateFor<OAuthType>
97
99
  ): void {
98
- if (typeof state.code !== 'string') {
99
- throw new Error('Invalid code');
100
- }
101
-
100
+ // This fails when the login outlived the cookies, was finished in a
101
+ // different browser, or was replaced by a newer login attempt.
102
102
  const storedState = getOAuthCookieValue(provider, req, 'state');
103
103
  if (!state.state || !storedState || storedState !== state.state) {
104
- throw new Error('Invalid state');
104
+ throw createLoginExpiredError(provider);
105
105
  }
106
106
 
107
107
  if (isOAuthStateWithPKCE(state) && !state.codeVerifier) {
108
- throw new Error('Missing code verifier');
108
+ throw createLoginExpiredError(provider);
109
109
  }
110
110
  }
111
111
 
112
+ function createLoginExpiredError(provider: ProviderConfig): HttpError {
113
+ return new HttpError(
114
+ 400,
115
+ `Your login attempt with ${provider.displayName} expired. Please try again.`
116
+ );
117
+ }
118
+
112
119
  function generateState(): { state: string } {
113
120
  return { state: arctic.generateState() };
114
121
  }
@@ -117,8 +124,39 @@ function generateCodeVerifier(): { codeVerifier: string } {
117
124
  return { codeVerifier: arctic.generateCodeVerifier() };
118
125
  }
119
126
 
120
- function getCode(req: ExpressRequest): { code: string } {
121
- return { code: `${req.query.code}` };
127
+ function getCode(
128
+ provider: ProviderConfig,
129
+ req: ExpressRequest
130
+ ): { code: string } {
131
+ const { code, error, error_description } = req.query;
132
+
133
+ // The provider's error is meant for developers, so we only log it (the
134
+ // handler logs `data`) and never show it to the user.
135
+ const providerErrorDetails = {
136
+ providerError: error,
137
+ providerErrorDescription: error_description,
138
+ };
139
+
140
+ // Providers send `access_denied` when the user cancels on the consent screen,
141
+ // but some (e.g. Keycloak, Auth0) also send it when their own policy denies
142
+ // the login.
143
+ if (error === 'access_denied') {
144
+ throw new HttpError(
145
+ 400,
146
+ `Login with ${provider.displayName} was cancelled or denied.`,
147
+ providerErrorDetails
148
+ );
149
+ }
150
+
151
+ if (error !== undefined || typeof code !== 'string' || code === '') {
152
+ throw new HttpError(
153
+ 400,
154
+ `Unable to log in with ${provider.displayName}. Please try again later.`,
155
+ providerErrorDetails
156
+ );
157
+ }
158
+
159
+ return { code };
122
160
  }
123
161
 
124
162
  function getState(req: ExpressRequest): { state: string } {
@@ -134,7 +172,11 @@ function getCodeVerifier(
134
172
  req,
135
173
  'codeVerifier'
136
174
  );
137
- return { codeVerifier };
175
+ // The cookie can be missing (dropped by the browser, or expired while the user
176
+ // sat on the consent screen). `validateOAuthState` rejects an empty code
177
+ // verifier, so we normalize the missing case into one instead of lying about
178
+ // the type.
179
+ return { codeVerifier: codeVerifier ?? '' };
138
180
  }
139
181
 
140
182
  function isOAuthStateWithPKCE(
@@ -7,7 +7,7 @@ import {
7
7
  validateAndGetUserFields,
8
8
  createProviderId,
9
9
  findAuthWithUserBy,
10
- } from 'wasp/auth/utils'
10
+ } from 'wasp/server/auth/utils'
11
11
  import { type {= authEntityUpper =} } from 'wasp/entities'
12
12
  import { prisma } from 'wasp/server'
13
13
  import { type UserSignupFields, type ProviderConfig } from 'wasp/auth/providers/types'
@@ -111,6 +111,10 @@ async function getAuthIdFromProviderDetails({
111
111
 
112
112
  return authId
113
113
  } else {
114
+ // The hook runs first so it can veto the signup (by throwing) before the
115
+ // developer's `userSignupFields` getters run.
116
+ await onBeforeSignupHook({ req, providerId })
117
+
114
118
  const userFields = await validateAndGetUserFields(
115
119
  { profile: providerProfile },
116
120
  userSignupFields,
@@ -118,8 +122,7 @@ async function getAuthIdFromProviderDetails({
118
122
 
119
123
  // For now, we don't have any extra data for the oauth providers, so we just pass an empty object.
120
124
  const providerData = await sanitizeAndSerializeProviderData({})
121
-
122
- await onBeforeSignupHook({ req, providerId })
125
+
123
126
  const user = await createUser(
124
127
  providerId,
125
128
  providerData,
@@ -1,15 +1,15 @@
1
1
  {{={= =}=}}
2
- import { createInvalidCredentialsError } from 'wasp/auth/utils'
2
+ import { createInvalidCredentialsError } from 'wasp/server/auth/utils'
3
3
  import { defineHandler } from 'wasp/server/utils'
4
- import { verifyPassword } from 'wasp/auth/password'
4
+ import { verifyPassword } from 'wasp/server/auth/password'
5
5
 
6
6
  import {
7
7
  createProviderId,
8
8
  findAuthIdentity,
9
9
  findAuthWithUserBy,
10
10
  getProviderDataWithPassword,
11
- } from 'wasp/auth/utils'
12
- import { createSession } from 'wasp/auth/session'
11
+ } from 'wasp/server/auth/utils'
12
+ import { createSession } from 'wasp/server/auth/session'
13
13
  import { ensureValidUsername, ensurePasswordIsPresent } from 'wasp/auth/validation'
14
14
  import { onBeforeLoginHook, onAfterLoginHook } from '../../hooks.js';
15
15
 
@@ -5,13 +5,13 @@ import {
5
5
  createUser,
6
6
  rethrowPossibleAuthError,
7
7
  sanitizeAndSerializeProviderData,
8
- } from 'wasp/auth/utils'
8
+ } from 'wasp/server/auth/utils'
9
9
  import {
10
10
  ensureValidUsername,
11
11
  ensurePasswordIsPresent,
12
12
  ensureValidPassword,
13
13
  } from 'wasp/auth/validation'
14
- import { validateAndGetUserFields } from 'wasp/auth/utils'
14
+ import { validateAndGetUserFields } from 'wasp/server/auth/utils'
15
15
  import type { UserSignupFields } from 'wasp/auth/providers/types'
16
16
  import { onBeforeSignupHook, onAfterSignupHook } from '../../hooks.js';
17
17
 
@@ -24,18 +24,26 @@ export function getSignupRoute({
24
24
  const fields = req.body ?? {}
25
25
  ensureValidArgs(fields)
26
26
 
27
+ const providerId = createProviderId('username', fields.username)
28
+
29
+ // The hook runs first so it can veto the signup (by throwing) before the
30
+ // developer's `userSignupFields` getters run.
31
+ try {
32
+ await onBeforeSignupHook({ req, providerId })
33
+ } catch (e: unknown) {
34
+ rethrowPossibleAuthError(e)
35
+ }
36
+
27
37
  const userFields = await validateAndGetUserFields(
28
38
  fields,
29
39
  userSignupFields,
30
40
  );
31
41
 
32
- const providerId = createProviderId('username', fields.username)
33
42
  const providerData = await sanitizeAndSerializeProviderData<'username'>({
34
43
  hashedPassword: fields.password,
35
44
  })
36
45
 
37
46
  try {
38
- await onBeforeSignupHook({ req, providerId })
39
47
  const user = await createUser(
40
48
  providerId,
41
49
  providerData,
@@ -0,0 +1,47 @@
1
+ import resolve from "@rollup/plugin-node-resolve";
2
+ import esbuild from "rollup-plugin-esbuild";
3
+ import { virtualUserModules } from "./plugins/virtualUserModules.js";
4
+
5
+ /**
6
+ * @param {string} inputFilePath
7
+ * @param {string} outputFilePath
8
+ * @returns {import("rollup").RollupOptions}
9
+ */
10
+ export function createRollupBundle(inputFilePath, outputFilePath) {
11
+ return {
12
+ input: inputFilePath,
13
+ output: {
14
+ file: outputFilePath,
15
+ format: "es",
16
+ sourcemap: true,
17
+ },
18
+ plugins: [
19
+ virtualUserModules(),
20
+ // We added `".ts"` to the default `extensions` array value
21
+ // (default is `[".mjs", ".js", ".json", ".node"]`).
22
+ // This is because the `virtualUserModules` plugin
23
+ // can resolve user virtual modules to TypeScript files.
24
+ resolve({ extensions: [".mjs", ".js", ".ts", ".json", ".node"] }),
25
+ esbuild({
26
+ target: "esnext",
27
+ }),
28
+ ],
29
+ // We don't want to bundle any of the node_module deps because we want to
30
+ // keep them as external dependencies.
31
+ external: /node_modules/,
32
+ // 'preserveSymlinks: false' tells Rollup to fully follow symlinks when
33
+ // resolving modules. This is the default option, but we're setting it
34
+ // explicitly because we rely on it.
35
+ //
36
+ // With this set to 'false', the 'wasp' package resolves to
37
+ // '.wasp/out/sdk/wasp' (not 'node_modules/wasp'), preventing Rollup from
38
+ // viewing it as an external dependency and ensuring it gets bundled.
39
+ //
40
+ // We need to bundle 'wasp' to support fully extensionless relative
41
+ // imports. See https://github.com/wasp-lang/wasp/issues/2492 for more
42
+ // details.
43
+ //
44
+ // Source: https://rollupjs.org/configuration-options/#preservesymlinks
45
+ preserveSymlinks: false,
46
+ }
47
+ }
@@ -2,23 +2,23 @@
2
2
  import { prisma } from 'wasp/server'
3
3
 
4
4
  {=# isAuthEnabled =}
5
- import { createInvalidCredentialsError } from 'wasp/auth/utils'
5
+ import { createInvalidCredentialsError } from 'wasp/server/auth/utils'
6
6
  {=/ isAuthEnabled =}
7
7
  import type {
8
8
  {=# crud.operations.GetAll =}
9
- GetAllQueryResolved,
9
+ RegisteredGetAllQuery,
10
10
  {=/ crud.operations.GetAll =}
11
11
  {=# crud.operations.Get =}
12
- GetQueryResolved,
12
+ RegisteredGetQuery,
13
13
  {=/ crud.operations.Get =}
14
14
  {=# crud.operations.Create =}
15
- CreateActionResolved,
15
+ RegisteredCreateAction,
16
16
  {=/ crud.operations.Create =}
17
17
  {=# crud.operations.Update =}
18
- UpdateActionResolved,
18
+ RegisteredUpdateAction,
19
19
  {=/ crud.operations.Update =}
20
20
  {=# crud.operations.Delete =}
21
- DeleteActionResolved,
21
+ RegisteredDeleteAction,
22
22
  {=/ crud.operations.Delete =}
23
23
  } from 'wasp/server/crud/{= crud.name =}'
24
24
  {=# overrides.GetAll.isDefined =}
@@ -50,7 +50,7 @@ const entities = {
50
50
  // 1. We either use the default implementation of the operation...
51
51
  =}
52
52
  {=^ overrides.GetAll.isDefined =}
53
- const _waspGetAllQuery: GetAllQueryResolved = ((args, context) => {
53
+ const _waspGetAllQuery: RegisteredGetAllQuery = ((args, context) => {
54
54
  {=^ crud.operations.GetAll.isPublic =}
55
55
  throwIfNotAuthenticated(context)
56
56
  {=/ crud.operations.GetAll.isPublic =}
@@ -78,11 +78,11 @@ export async function getAllFn(args, context) {
78
78
  {=!
79
79
  // That's it! It is similar for all other operations.
80
80
  =}
81
-
82
81
  {=# crud.operations.Get =}
82
+
83
83
  // Get query
84
84
  {=^ overrides.Get.isDefined =}
85
- const _waspGetQuery: GetQueryResolved = ((args, context) => {
85
+ const _waspGetQuery: RegisteredGetQuery = ((args, context) => {
86
86
  {=^ crud.operations.Get.isPublic =}
87
87
  throwIfNotAuthenticated(context)
88
88
  {=/ crud.operations.Get.isPublic =}
@@ -100,11 +100,11 @@ export async function getFn(args, context) {
100
100
  });
101
101
  }
102
102
  {=/ crud.operations.Get =}
103
-
104
103
  {=# crud.operations.Create =}
104
+
105
105
  // Create action
106
106
  {=^ overrides.Create.isDefined =}
107
- const _waspCreateAction: CreateActionResolved = ((args, context) => {
107
+ const _waspCreateAction: RegisteredCreateAction = ((args, context) => {
108
108
  {=^ crud.operations.Create.isPublic =}
109
109
  throwIfNotAuthenticated(context)
110
110
  {=/ crud.operations.Create.isPublic =}
@@ -122,11 +122,11 @@ export async function createFn(args, context) {
122
122
  });
123
123
  }
124
124
  {=/ crud.operations.Create =}
125
-
126
125
  {=# crud.operations.Update =}
126
+
127
127
  // Update action
128
128
  {=^ overrides.Update.isDefined =}
129
- const _waspUpdateAction: UpdateActionResolved = ((args, context) => {
129
+ const _waspUpdateAction: RegisteredUpdateAction = ((args, context) => {
130
130
  {=^ crud.operations.Update.isPublic =}
131
131
  throwIfNotAuthenticated(context)
132
132
  {=/ crud.operations.Update.isPublic =}
@@ -148,11 +148,11 @@ export async function updateFn(args, context) {
148
148
  });
149
149
  }
150
150
  {=/ crud.operations.Update =}
151
-
152
151
  {=# crud.operations.Delete =}
152
+
153
153
  // Delete action
154
154
  {=^ overrides.Delete.isDefined =}
155
- const _waspDeleteAction: DeleteActionResolved = ((args, context) => {
155
+ const _waspDeleteAction: RegisteredDeleteAction = ((args, context) => {
156
156
  {=^ crud.operations.Delete.isPublic =}
157
157
  throwIfNotAuthenticated(context)
158
158
  {=/ crud.operations.Delete.isPublic =}
@@ -181,4 +181,4 @@ function throwIfNotAuthenticated (context) {
181
181
  {=^ isAuthEnabled =}
182
182
  // Auth is not enabled
183
183
  {=/ isAuthEnabled =}
184
- }
184
+ }