@wasp.sh/wasp-cli-darwin-x64-unknown 0.20.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 (410) hide show
  1. package/data/Cli/starters/README.md +22 -0
  2. package/data/Cli/starters/basic/README.md +35 -0
  3. package/data/Cli/starters/basic/eslint.config.js +24 -0
  4. package/data/Cli/starters/basic/main.wasp +100 -0
  5. package/data/Cli/starters/basic/package.json +29 -0
  6. package/data/Cli/starters/basic/postcss.config.js +6 -0
  7. package/data/Cli/starters/basic/schema.prisma +42 -0
  8. package/data/Cli/starters/basic/src/App.css +13 -0
  9. package/data/Cli/starters/basic/src/App.tsx +12 -0
  10. package/data/Cli/starters/basic/src/assets/logo.svg +1 -0
  11. package/data/Cli/starters/basic/src/auth/AuthLayout.tsx +10 -0
  12. package/data/Cli/starters/basic/src/auth/email/EmailVerificationPage.tsx +19 -0
  13. package/data/Cli/starters/basic/src/auth/email/LoginPage.tsx +27 -0
  14. package/data/Cli/starters/basic/src/auth/email/PasswordResetPage.tsx +19 -0
  15. package/data/Cli/starters/basic/src/auth/email/RequestPasswordResetPage.tsx +10 -0
  16. package/data/Cli/starters/basic/src/auth/email/SignupPage.tsx +34 -0
  17. package/data/Cli/starters/basic/src/auth/email/userSignupFields.ts +13 -0
  18. package/data/Cli/starters/basic/src/shared/components/Button.tsx +90 -0
  19. package/data/Cli/starters/basic/src/shared/components/Dialog.tsx +85 -0
  20. package/data/Cli/starters/basic/src/shared/components/Header.tsx +39 -0
  21. package/data/Cli/starters/basic/src/shared/components/Input.tsx +36 -0
  22. package/data/Cli/starters/basic/src/shared/components/Portal.tsx +26 -0
  23. package/data/Cli/starters/basic/src/tags/actions.ts +23 -0
  24. package/data/Cli/starters/basic/src/tags/components/ColorRadioButton.tsx +44 -0
  25. package/data/Cli/starters/basic/src/tags/components/ColorRadioButtons.tsx +59 -0
  26. package/data/Cli/starters/basic/src/tags/components/CreateTagDialog.tsx +50 -0
  27. package/data/Cli/starters/basic/src/tags/components/CreateTagForm.tsx +100 -0
  28. package/data/Cli/starters/basic/src/tags/components/TagLabel.tsx +55 -0
  29. package/data/Cli/starters/basic/src/tags/components/colors.ts +8 -0
  30. package/data/Cli/starters/basic/src/tags/queries.ts +14 -0
  31. package/data/Cli/starters/basic/src/tasks/TasksPage.tsx +19 -0
  32. package/data/Cli/starters/basic/src/tasks/actions.ts +71 -0
  33. package/data/Cli/starters/basic/src/tasks/components/CreateTaskForm.tsx +103 -0
  34. package/data/Cli/starters/basic/src/tasks/components/TaskList.tsx +68 -0
  35. package/data/Cli/starters/basic/src/tasks/components/TaskListItem.tsx +56 -0
  36. package/data/Cli/starters/basic/src/tasks/queries.ts +21 -0
  37. package/data/Cli/starters/basic/tailwind.config.js +30 -0
  38. package/data/Cli/starters/basic/vite.config.ts +7 -0
  39. package/data/Cli/starters/minimal/main.wasp +14 -0
  40. package/data/Cli/starters/minimal/package.json +18 -0
  41. package/data/Cli/starters/minimal/schema.prisma +10 -0
  42. package/data/Cli/starters/minimal/src/Main.css +103 -0
  43. package/data/Cli/starters/minimal/src/MainPage.tsx +37 -0
  44. package/data/Cli/starters/minimal/src/assets/logo.svg +1 -0
  45. package/data/Cli/starters/minimal/vite.config.ts +7 -0
  46. package/data/Cli/starters/skeleton/public/favicon.ico +0 -0
  47. package/data/Cli/starters/skeleton/src/vite-env.d.ts +7 -0
  48. package/data/Cli/starters/skeleton/tsconfig.json +28 -0
  49. package/data/Generator/templates/Dockerfile +78 -0
  50. package/data/Generator/templates/db/schema.prisma +24 -0
  51. package/data/Generator/templates/dockerignore +2 -0
  52. package/data/Generator/templates/react-app/README.md +21 -0
  53. package/data/Generator/templates/react-app/gitignore +23 -0
  54. package/data/Generator/templates/react-app/index.html +22 -0
  55. package/data/Generator/templates/react-app/netlify.toml +8 -0
  56. package/data/Generator/templates/react-app/npmrc +1 -0
  57. package/data/Generator/templates/react-app/package.json +31 -0
  58. package/data/Generator/templates/react-app/public/manifest.json +15 -0
  59. package/data/Generator/templates/react-app/src/auth/pages/OAuthCallback.tsx +93 -0
  60. package/data/Generator/templates/react-app/src/auth/pages/createAuthRequiredPage.jsx +40 -0
  61. package/data/Generator/templates/react-app/src/components/DefaultRootErrorBoundary.tsx +16 -0
  62. package/data/Generator/templates/react-app/src/components/FullPageWrapper.tsx +21 -0
  63. package/data/Generator/templates/react-app/src/components/Loader.module.css +37 -0
  64. package/data/Generator/templates/react-app/src/components/Loader.tsx +12 -0
  65. package/data/Generator/templates/react-app/src/components/Message.tsx +86 -0
  66. package/data/Generator/templates/react-app/src/index.tsx +47 -0
  67. package/data/Generator/templates/react-app/src/logo.png +0 -0
  68. package/data/Generator/templates/react-app/src/router.tsx +59 -0
  69. package/data/Generator/templates/react-app/src/test/vitest/setup.ts +8 -0
  70. package/data/Generator/templates/react-app/src/utils.js +3 -0
  71. package/data/Generator/templates/react-app/src/vite-env.d.ts +1 -0
  72. package/data/Generator/templates/react-app/tsconfig.app.json +28 -0
  73. package/data/Generator/templates/react-app/tsconfig.json +11 -0
  74. package/data/Generator/templates/react-app/tsconfig.vite.json +16 -0
  75. package/data/Generator/templates/react-app/vite/detectServerImports.ts +53 -0
  76. package/data/Generator/templates/react-app/vite/validateEnv.ts +45 -0
  77. package/data/Generator/templates/react-app/vite.config.ts +74 -0
  78. package/data/Generator/templates/sdk/wasp/api/events.ts +11 -0
  79. package/data/Generator/templates/sdk/wasp/api/index.ts +136 -0
  80. package/data/Generator/templates/sdk/wasp/auth/email/actions/login.ts +13 -0
  81. package/data/Generator/templates/sdk/wasp/auth/email/actions/passwordReset.ts +22 -0
  82. package/data/Generator/templates/sdk/wasp/auth/email/actions/signup.ts +20 -0
  83. package/data/Generator/templates/sdk/wasp/auth/email/actions/verifyEmail.ts +14 -0
  84. package/data/Generator/templates/sdk/wasp/auth/email/index.ts +5 -0
  85. package/data/Generator/templates/sdk/wasp/auth/forms/Auth.module.css +16 -0
  86. package/data/Generator/templates/sdk/wasp/auth/forms/Auth.tsx +94 -0
  87. package/data/Generator/templates/sdk/wasp/auth/forms/ForgotPassword.tsx +18 -0
  88. package/data/Generator/templates/sdk/wasp/auth/forms/Login.tsx +18 -0
  89. package/data/Generator/templates/sdk/wasp/auth/forms/ResetPassword.tsx +18 -0
  90. package/data/Generator/templates/sdk/wasp/auth/forms/Signup.tsx +24 -0
  91. package/data/Generator/templates/sdk/wasp/auth/forms/VerifyEmail.tsx +18 -0
  92. package/data/Generator/templates/sdk/wasp/auth/forms/internal/Form.module.css +99 -0
  93. package/data/Generator/templates/sdk/wasp/auth/forms/internal/Form.tsx +74 -0
  94. package/data/Generator/templates/sdk/wasp/auth/forms/internal/Message.module.css +22 -0
  95. package/data/Generator/templates/sdk/wasp/auth/forms/internal/Message.tsx +34 -0
  96. package/data/Generator/templates/sdk/wasp/auth/forms/internal/auth-styles.css +30 -0
  97. package/data/Generator/templates/sdk/wasp/auth/forms/internal/common/LoginSignupForm.module.css +55 -0
  98. package/data/Generator/templates/sdk/wasp/auth/forms/internal/common/LoginSignupForm.tsx +291 -0
  99. package/data/Generator/templates/sdk/wasp/auth/forms/internal/email/ForgotPasswordForm.tsx +52 -0
  100. package/data/Generator/templates/sdk/wasp/auth/forms/internal/email/ResetPasswordForm.tsx +82 -0
  101. package/data/Generator/templates/sdk/wasp/auth/forms/internal/email/VerifyEmailForm.tsx +43 -0
  102. package/data/Generator/templates/sdk/wasp/auth/forms/internal/email/useEmail.ts +33 -0
  103. package/data/Generator/templates/sdk/wasp/auth/forms/internal/social/SocialButton.module.css +33 -0
  104. package/data/Generator/templates/sdk/wasp/auth/forms/internal/social/SocialButton.tsx +14 -0
  105. package/data/Generator/templates/sdk/wasp/auth/forms/internal/social/SocialIcons.module.css +4 -0
  106. package/data/Generator/templates/sdk/wasp/auth/forms/internal/social/SocialIcons.tsx +74 -0
  107. package/data/Generator/templates/sdk/wasp/auth/forms/internal/usernameAndPassword/useUsernameAndPassword.ts +29 -0
  108. package/data/Generator/templates/sdk/wasp/auth/forms/internal/util.ts +16 -0
  109. package/data/Generator/templates/sdk/wasp/auth/forms/types.ts +77 -0
  110. package/data/Generator/templates/sdk/wasp/auth/helpers/_Provider.tsx +17 -0
  111. package/data/Generator/templates/sdk/wasp/auth/helpers/user.ts +15 -0
  112. package/data/Generator/templates/sdk/wasp/auth/index.ts +9 -0
  113. package/data/Generator/templates/sdk/wasp/auth/jwt.ts +22 -0
  114. package/data/Generator/templates/sdk/wasp/auth/logout.ts +18 -0
  115. package/data/Generator/templates/sdk/wasp/auth/lucia.ts +53 -0
  116. package/data/Generator/templates/sdk/wasp/auth/password.ts +36 -0
  117. package/data/Generator/templates/sdk/wasp/auth/providers/index.ts +9 -0
  118. package/data/Generator/templates/sdk/wasp/auth/providers/types.ts +68 -0
  119. package/data/Generator/templates/sdk/wasp/auth/session.ts +78 -0
  120. package/data/Generator/templates/sdk/wasp/auth/types.ts +2 -0
  121. package/data/Generator/templates/sdk/wasp/auth/useAuth.ts +37 -0
  122. package/data/Generator/templates/sdk/wasp/auth/user.ts +63 -0
  123. package/data/Generator/templates/sdk/wasp/auth/username/actions/login.ts +13 -0
  124. package/data/Generator/templates/sdk/wasp/auth/username/actions/signup.ts +20 -0
  125. package/data/Generator/templates/sdk/wasp/auth/username/index.ts +2 -0
  126. package/data/Generator/templates/sdk/wasp/auth/utils.ts +369 -0
  127. package/data/Generator/templates/sdk/wasp/auth/validation.ts +83 -0
  128. package/data/Generator/templates/sdk/wasp/client/auth/discord.ts +2 -0
  129. package/data/Generator/templates/sdk/wasp/client/auth/email.ts +5 -0
  130. package/data/Generator/templates/sdk/wasp/client/auth/github.ts +2 -0
  131. package/data/Generator/templates/sdk/wasp/client/auth/google.ts +2 -0
  132. package/data/Generator/templates/sdk/wasp/client/auth/index.ts +29 -0
  133. package/data/Generator/templates/sdk/wasp/client/auth/keycloak.ts +2 -0
  134. package/data/Generator/templates/sdk/wasp/client/auth/slack.ts +2 -0
  135. package/data/Generator/templates/sdk/wasp/client/auth/ui.ts +32 -0
  136. package/data/Generator/templates/sdk/wasp/client/auth/username.ts +2 -0
  137. package/data/Generator/templates/sdk/wasp/client/config.ts +15 -0
  138. package/data/Generator/templates/sdk/wasp/client/crud/_crud.ts +89 -0
  139. package/data/Generator/templates/sdk/wasp/client/crud/index.ts +4 -0
  140. package/data/Generator/templates/sdk/wasp/client/crud/operationsHelpers.ts +21 -0
  141. package/data/Generator/templates/sdk/wasp/client/env/schema.ts +22 -0
  142. package/data/Generator/templates/sdk/wasp/client/env.ts +5 -0
  143. package/data/Generator/templates/sdk/wasp/client/hooks.ts +19 -0
  144. package/data/Generator/templates/sdk/wasp/client/index.ts +17 -0
  145. package/data/Generator/templates/sdk/wasp/client/operations/actions/core.ts +49 -0
  146. package/data/Generator/templates/sdk/wasp/client/operations/actions/index.ts +13 -0
  147. package/data/Generator/templates/sdk/wasp/client/operations/hooks.ts +347 -0
  148. package/data/Generator/templates/sdk/wasp/client/operations/index.ts +22 -0
  149. package/data/Generator/templates/sdk/wasp/client/operations/internal/index.ts +22 -0
  150. package/data/Generator/templates/sdk/wasp/client/operations/internal/resources.js +83 -0
  151. package/data/Generator/templates/sdk/wasp/client/operations/internal/updateHandlersMap.js +37 -0
  152. package/data/Generator/templates/sdk/wasp/client/operations/queries/core.ts +91 -0
  153. package/data/Generator/templates/sdk/wasp/client/operations/queries/index.ts +16 -0
  154. package/data/Generator/templates/sdk/wasp/client/operations/queryClient.ts +34 -0
  155. package/data/Generator/templates/sdk/wasp/client/operations/rpc.ts +96 -0
  156. package/data/Generator/templates/sdk/wasp/client/router/Link.tsx +21 -0
  157. package/data/Generator/templates/sdk/wasp/client/router/index.ts +53 -0
  158. package/data/Generator/templates/sdk/wasp/client/router/linkHelpers.ts +48 -0
  159. package/data/Generator/templates/sdk/wasp/client/router/types.ts +98 -0
  160. package/data/Generator/templates/sdk/wasp/client/test/index.ts +1 -0
  161. package/data/Generator/templates/sdk/wasp/client/test/vitest/helpers.tsx +95 -0
  162. package/data/Generator/templates/sdk/wasp/client/webSocket/WebSocketProvider.tsx +77 -0
  163. package/data/Generator/templates/sdk/wasp/client/webSocket/index.ts +39 -0
  164. package/data/Generator/templates/sdk/wasp/core/auth.ts +40 -0
  165. package/data/Generator/templates/sdk/wasp/core/serialization/custom-register.ts +21 -0
  166. package/data/Generator/templates/sdk/wasp/core/serialization/index.ts +56 -0
  167. package/data/Generator/templates/sdk/wasp/core/serialization/prisma.ts +54 -0
  168. package/data/Generator/templates/sdk/wasp/core/storage.ts +50 -0
  169. package/data/Generator/templates/sdk/wasp/dev/index.ts +19 -0
  170. package/data/Generator/templates/sdk/wasp/entities/index.ts +28 -0
  171. package/data/Generator/templates/sdk/wasp/env/index.ts +9 -0
  172. package/data/Generator/templates/sdk/wasp/env/validation.ts +38 -0
  173. package/data/Generator/templates/sdk/wasp/package.json +152 -0
  174. package/data/Generator/templates/sdk/wasp/prisma-runtime-library.d.ts +17 -0
  175. package/data/Generator/templates/sdk/wasp/scripts/copy-assets.js +14 -0
  176. package/data/Generator/templates/sdk/wasp/server/HttpError.ts +30 -0
  177. package/data/Generator/templates/sdk/wasp/server/_types/index.ts +105 -0
  178. package/data/Generator/templates/sdk/wasp/server/_types/taggedEntities.ts +26 -0
  179. package/data/Generator/templates/sdk/wasp/server/api/index.ts +44 -0
  180. package/data/Generator/templates/sdk/wasp/server/auth/email/index.ts +20 -0
  181. package/data/Generator/templates/sdk/wasp/server/auth/email/utils.ts +104 -0
  182. package/data/Generator/templates/sdk/wasp/server/auth/hooks.ts +188 -0
  183. package/data/Generator/templates/sdk/wasp/server/auth/index.ts +49 -0
  184. package/data/Generator/templates/sdk/wasp/server/auth/oauth/index.ts +38 -0
  185. package/data/Generator/templates/sdk/wasp/server/auth/oauth/oneTimeCode.ts +50 -0
  186. package/data/Generator/templates/sdk/wasp/server/auth/oauth/provider.ts +20 -0
  187. package/data/Generator/templates/sdk/wasp/server/auth/oauth/providers/discord.ts +22 -0
  188. package/data/Generator/templates/sdk/wasp/server/auth/oauth/providers/github.ts +20 -0
  189. package/data/Generator/templates/sdk/wasp/server/auth/oauth/providers/google.ts +22 -0
  190. package/data/Generator/templates/sdk/wasp/server/auth/oauth/providers/keycloak.ts +23 -0
  191. package/data/Generator/templates/sdk/wasp/server/auth/oauth/providers/slack.ts +22 -0
  192. package/data/Generator/templates/sdk/wasp/server/auth/oauth/redirect.ts +43 -0
  193. package/data/Generator/templates/sdk/wasp/server/auth/user.ts +148 -0
  194. package/data/Generator/templates/sdk/wasp/server/auth/username.ts +1 -0
  195. package/data/Generator/templates/sdk/wasp/server/config.ts +47 -0
  196. package/data/Generator/templates/sdk/wasp/server/crud/_operationTypes.ts +134 -0
  197. package/data/Generator/templates/sdk/wasp/server/crud/index.ts +5 -0
  198. package/data/Generator/templates/sdk/wasp/server/dbClient.ts +35 -0
  199. package/data/Generator/templates/sdk/wasp/server/email/core/helpers.ts +40 -0
  200. package/data/Generator/templates/sdk/wasp/server/email/core/index.ts +17 -0
  201. package/data/Generator/templates/sdk/wasp/server/email/core/providers/dummy.ts +34 -0
  202. package/data/Generator/templates/sdk/wasp/server/email/core/providers/mailgun.ts +31 -0
  203. package/data/Generator/templates/sdk/wasp/server/email/core/providers/sendgrid.ts +44 -0
  204. package/data/Generator/templates/sdk/wasp/server/email/core/providers/smtp.ts +29 -0
  205. package/data/Generator/templates/sdk/wasp/server/email/core/types.ts +59 -0
  206. package/data/Generator/templates/sdk/wasp/server/email/index.ts +39 -0
  207. package/data/Generator/templates/sdk/wasp/server/env.ts +173 -0
  208. package/data/Generator/templates/sdk/wasp/server/index.ts +17 -0
  209. package/data/Generator/templates/sdk/wasp/server/jobs/_job.ts +39 -0
  210. package/data/Generator/templates/sdk/wasp/server/jobs/core/job.ts +28 -0
  211. package/data/Generator/templates/sdk/wasp/server/jobs/core/pgBoss/index.ts +3 -0
  212. package/data/Generator/templates/sdk/wasp/server/jobs/core/pgBoss/pgBoss.ts +76 -0
  213. package/data/Generator/templates/sdk/wasp/server/jobs/core/pgBoss/pgBossJob.ts +230 -0
  214. package/data/Generator/templates/sdk/wasp/server/jobs/core/pgBoss/types.ts +9 -0
  215. package/data/Generator/templates/sdk/wasp/server/jobs/index.ts +5 -0
  216. package/data/Generator/templates/sdk/wasp/server/middleware/globalMiddleware.ts +8 -0
  217. package/data/Generator/templates/sdk/wasp/server/middleware/index.ts +1 -0
  218. package/data/Generator/templates/sdk/wasp/server/operations/actions/index.ts +41 -0
  219. package/data/Generator/templates/sdk/wasp/server/operations/actions/types.ts +35 -0
  220. package/data/Generator/templates/sdk/wasp/server/operations/index.ts +13 -0
  221. package/data/Generator/templates/sdk/wasp/server/operations/queries/index.ts +42 -0
  222. package/data/Generator/templates/sdk/wasp/server/operations/queries/types.ts +36 -0
  223. package/data/Generator/templates/sdk/wasp/server/operations/wrappers.ts +242 -0
  224. package/data/Generator/templates/sdk/wasp/server/types/index.ts +11 -0
  225. package/data/Generator/templates/sdk/wasp/server/utils.ts +38 -0
  226. package/data/Generator/templates/sdk/wasp/server/webSocket/index.ts +57 -0
  227. package/data/Generator/templates/sdk/wasp/tsconfig.json +102 -0
  228. package/data/Generator/templates/sdk/wasp/universal/ansiColors.ts +14 -0
  229. package/data/Generator/templates/sdk/wasp/universal/predicates.ts +3 -0
  230. package/data/Generator/templates/sdk/wasp/universal/types.ts +74 -0
  231. package/data/Generator/templates/sdk/wasp/universal/url.ts +9 -0
  232. package/data/Generator/templates/sdk/wasp/universal/validators.ts +21 -0
  233. package/data/Generator/templates/sdk/wasp/vite-env.d.ts +1 -0
  234. package/data/Generator/templates/server/README.md +1 -0
  235. package/data/Generator/templates/server/gitignore +6 -0
  236. package/data/Generator/templates/server/nodemon.json +13 -0
  237. package/data/Generator/templates/server/npmrc +1 -0
  238. package/data/Generator/templates/server/package.json +27 -0
  239. package/data/Generator/templates/server/rollup.config.js +44 -0
  240. package/data/Generator/templates/server/src/actions/_action.ts +18 -0
  241. package/data/Generator/templates/server/src/app.js +36 -0
  242. package/data/Generator/templates/server/src/auth/hooks.ts +135 -0
  243. package/data/Generator/templates/server/src/auth/providers/config/discord.ts +69 -0
  244. package/data/Generator/templates/server/src/auth/providers/config/email.ts +96 -0
  245. package/data/Generator/templates/server/src/auth/providers/config/github.ts +78 -0
  246. package/data/Generator/templates/server/src/auth/providers/config/google.ts +65 -0
  247. package/data/Generator/templates/server/src/auth/providers/config/keycloak.ts +67 -0
  248. package/data/Generator/templates/server/src/auth/providers/config/slack.ts +65 -0
  249. package/data/Generator/templates/server/src/auth/providers/config/username.ts +33 -0
  250. package/data/Generator/templates/server/src/auth/providers/email/login.ts +66 -0
  251. package/data/Generator/templates/server/src/auth/providers/email/requestPasswordReset.ts +74 -0
  252. package/data/Generator/templates/server/src/auth/providers/email/resetPassword.ts +48 -0
  253. package/data/Generator/templates/server/src/auth/providers/email/signup.ts +165 -0
  254. package/data/Generator/templates/server/src/auth/providers/email/verifyEmail.ts +42 -0
  255. package/data/Generator/templates/server/src/auth/providers/index.ts +32 -0
  256. package/data/Generator/templates/server/src/auth/providers/oauth/config.ts +19 -0
  257. package/data/Generator/templates/server/src/auth/providers/oauth/cookies.ts +35 -0
  258. package/data/Generator/templates/server/src/auth/providers/oauth/handler.ts +130 -0
  259. package/data/Generator/templates/server/src/auth/providers/oauth/oneTimeCode.ts +39 -0
  260. package/data/Generator/templates/server/src/auth/providers/oauth/state.ts +144 -0
  261. package/data/Generator/templates/server/src/auth/providers/oauth/types.ts +7 -0
  262. package/data/Generator/templates/server/src/auth/providers/oauth/user.ts +139 -0
  263. package/data/Generator/templates/server/src/auth/providers/username/login.ts +64 -0
  264. package/data/Generator/templates/server/src/auth/providers/username/signup.ts +59 -0
  265. package/data/Generator/templates/server/src/crud/_operations.ts +184 -0
  266. package/data/Generator/templates/server/src/dbSeed.ts +37 -0
  267. package/data/Generator/templates/server/src/jobs/_job.ts +9 -0
  268. package/data/Generator/templates/server/src/jobs/core/allJobs.ts +8 -0
  269. package/data/Generator/templates/server/src/middleware/globalMiddleware.ts +45 -0
  270. package/data/Generator/templates/server/src/middleware/index.ts +1 -0
  271. package/data/Generator/templates/server/src/middleware/operations.ts +28 -0
  272. package/data/Generator/templates/server/src/queries/_query.ts +18 -0
  273. package/data/Generator/templates/server/src/routes/apis/index.ts +67 -0
  274. package/data/Generator/templates/server/src/routes/auth/index.js +16 -0
  275. package/data/Generator/templates/server/src/routes/auth/logout.ts +12 -0
  276. package/data/Generator/templates/server/src/routes/auth/me.ts +10 -0
  277. package/data/Generator/templates/server/src/routes/crud/_crud.ts +46 -0
  278. package/data/Generator/templates/server/src/routes/crud/index.ts +12 -0
  279. package/data/Generator/templates/server/src/routes/index.js +55 -0
  280. package/data/Generator/templates/server/src/routes/operations/_action.js +5 -0
  281. package/data/Generator/templates/server/src/routes/operations/_query.js +5 -0
  282. package/data/Generator/templates/server/src/routes/operations/index.js +18 -0
  283. package/data/Generator/templates/server/src/server.ts +76 -0
  284. package/data/Generator/templates/server/src/views/wrong-port.ts +123 -0
  285. package/data/Generator/templates/server/src/webSocket/initialization.ts +59 -0
  286. package/data/Generator/templates/server/tsconfig.json +41 -0
  287. package/data/Lsp/templates/ts/action.fn.ts +12 -0
  288. package/data/Lsp/templates/ts/operation.fn.js +7 -0
  289. package/data/Lsp/templates/ts/page.component.jsx +9 -0
  290. package/data/Lsp/templates/ts/query.fn.ts +12 -0
  291. package/data/packages/deploy/dist/common/brandedTypes.js +2 -0
  292. package/data/packages/deploy/dist/common/clientApp.js +26 -0
  293. package/data/packages/deploy/dist/common/commander.js +8 -0
  294. package/data/packages/deploy/dist/common/random.js +5 -0
  295. package/data/packages/deploy/dist/common/terminal.js +24 -0
  296. package/data/packages/deploy/dist/common/typeUtils.js +2 -0
  297. package/data/packages/deploy/dist/common/validation.js +14 -0
  298. package/data/packages/deploy/dist/common/waspBuild.js +21 -0
  299. package/data/packages/deploy/dist/common/waspProject.js +43 -0
  300. package/data/packages/deploy/dist/common/zx.js +10 -0
  301. package/data/packages/deploy/dist/index.js +30 -0
  302. package/data/packages/deploy/dist/providers/fly/CommonCmdOptions.js +2 -0
  303. package/data/packages/deploy/dist/providers/fly/CommonOps.js +36 -0
  304. package/data/packages/deploy/dist/providers/fly/DeploymentInstructions.js +12 -0
  305. package/data/packages/deploy/dist/providers/fly/commands/cmd/CmdCmdOptions.js +2 -0
  306. package/data/packages/deploy/dist/providers/fly/commands/cmd/cmd.js +29 -0
  307. package/data/packages/deploy/dist/providers/fly/commands/createDb/CreateDbCmdOptions.js +2 -0
  308. package/data/packages/deploy/dist/providers/fly/commands/createDb/createDb.js +55 -0
  309. package/data/packages/deploy/dist/providers/fly/commands/deploy/DeployCmdOptions.js +2 -0
  310. package/data/packages/deploy/dist/providers/fly/commands/deploy/deploy.js +88 -0
  311. package/data/packages/deploy/dist/providers/fly/commands/launch/LaunchCmdOptions.js +2 -0
  312. package/data/packages/deploy/dist/providers/fly/commands/launch/launch.js +17 -0
  313. package/data/packages/deploy/dist/providers/fly/commands/setup/SetupCmdOptions.js +2 -0
  314. package/data/packages/deploy/dist/providers/fly/commands/setup/setup.js +141 -0
  315. package/data/packages/deploy/dist/providers/fly/flyAppUrl.js +4 -0
  316. package/data/packages/deploy/dist/providers/fly/flyCli.js +74 -0
  317. package/data/packages/deploy/dist/providers/fly/index.js +121 -0
  318. package/data/packages/deploy/dist/providers/fly/jsonOutputSchemas.js +37 -0
  319. package/data/packages/deploy/dist/providers/fly/tomlFile.js +65 -0
  320. package/data/packages/deploy/dist/providers/railway/DeploymentInstructions.js +11 -0
  321. package/data/packages/deploy/dist/providers/railway/brandedTypes.js +2 -0
  322. package/data/packages/deploy/dist/providers/railway/commands/deploy/DeployCmdOptions.js +2 -0
  323. package/data/packages/deploy/dist/providers/railway/commands/deploy/client.js +22 -0
  324. package/data/packages/deploy/dist/providers/railway/commands/deploy/common.js +40 -0
  325. package/data/packages/deploy/dist/providers/railway/commands/deploy/index.js +57 -0
  326. package/data/packages/deploy/dist/providers/railway/commands/deploy/server.js +17 -0
  327. package/data/packages/deploy/dist/providers/railway/commands/launch/LaunchCmdOptions.js +2 -0
  328. package/data/packages/deploy/dist/providers/railway/commands/launch/launch.js +9 -0
  329. package/data/packages/deploy/dist/providers/railway/commands/setup/SetupCmdOptions.js +2 -0
  330. package/data/packages/deploy/dist/providers/railway/commands/setup/setup.js +146 -0
  331. package/data/packages/deploy/dist/providers/railway/index.js +83 -0
  332. package/data/packages/deploy/dist/providers/railway/jsonOutputSchemas.js +19 -0
  333. package/data/packages/deploy/dist/providers/railway/ports.js +6 -0
  334. package/data/packages/deploy/dist/providers/railway/railwayCli.js +85 -0
  335. package/data/packages/deploy/dist/providers/railway/railwayProject/RailwayProject.js +14 -0
  336. package/data/packages/deploy/dist/providers/railway/railwayProject/cli.js +80 -0
  337. package/data/packages/deploy/dist/providers/railway/railwayProject/index.js +48 -0
  338. package/data/packages/deploy/dist/providers/railway/railwayService/nameGenerator.js +24 -0
  339. package/data/packages/deploy/dist/providers/railway/railwayService/url.js +32 -0
  340. package/data/packages/deploy/package-lock.json +3536 -0
  341. package/data/packages/deploy/package.json +29 -0
  342. package/data/packages/prisma/dist/format.js +35 -0
  343. package/data/packages/prisma/dist/index.js +33 -0
  344. package/data/packages/prisma/package-lock.json +5101 -0
  345. package/data/packages/prisma/package.json +30 -0
  346. package/data/packages/studio/dist/index.js +48 -0
  347. package/data/packages/studio/dist/public/assets/Flow-b5112d3d.js +26 -0
  348. package/data/packages/studio/dist/public/assets/index-17ce6ed4.css +1 -0
  349. package/data/packages/studio/dist/public/assets/index-62a9d21a.js +120 -0
  350. package/data/packages/studio/dist/public/index.html +14 -0
  351. package/data/packages/studio/package-lock.json +1866 -0
  352. package/data/packages/studio/package.json +33 -0
  353. package/data/packages/ts-inspect/dist/exports.js +82 -0
  354. package/data/packages/ts-inspect/dist/index.js +28 -0
  355. package/data/packages/ts-inspect/package-lock.json +4947 -0
  356. package/data/packages/ts-inspect/package.json +31 -0
  357. package/data/packages/wasp-config/dist/__tests__/appAnalyzer.unit.test.d.ts +2 -0
  358. package/data/packages/wasp-config/dist/__tests__/appAnalyzer.unit.test.d.ts.map +1 -0
  359. package/data/packages/wasp-config/dist/__tests__/appAnalyzer.unit.test.js +59 -0
  360. package/data/packages/wasp-config/dist/__tests__/cli.unit.test.d.ts +2 -0
  361. package/data/packages/wasp-config/dist/__tests__/cli.unit.test.d.ts.map +1 -0
  362. package/data/packages/wasp-config/dist/__tests__/cli.unit.test.js +65 -0
  363. package/data/packages/wasp-config/dist/__tests__/mapTsAppSpecToAppSpecDecls.integration.test.d.ts +2 -0
  364. package/data/packages/wasp-config/dist/__tests__/mapTsAppSpecToAppSpecDecls.integration.test.d.ts.map +1 -0
  365. package/data/packages/wasp-config/dist/__tests__/mapTsAppSpecToAppSpecDecls.integration.test.js +126 -0
  366. package/data/packages/wasp-config/dist/__tests__/mapTsAppSpecToAppSpecDecls.unit.test.d.ts +2 -0
  367. package/data/packages/wasp-config/dist/__tests__/mapTsAppSpecToAppSpecDecls.unit.test.d.ts.map +1 -0
  368. package/data/packages/wasp-config/dist/__tests__/mapTsAppSpecToAppSpecDecls.unit.test.js +743 -0
  369. package/data/packages/wasp-config/dist/__tests__/testFixtures.d.ts +224 -0
  370. package/data/packages/wasp-config/dist/__tests__/testFixtures.d.ts.map +1 -0
  371. package/data/packages/wasp-config/dist/__tests__/testFixtures.js +656 -0
  372. package/data/packages/wasp-config/dist/__tests__/testFixtures.test-d.d.ts +2 -0
  373. package/data/packages/wasp-config/dist/__tests__/testFixtures.test-d.d.ts.map +1 -0
  374. package/data/packages/wasp-config/dist/__tests__/testFixtures.test-d.js +57 -0
  375. package/data/packages/wasp-config/dist/src/_private.d.ts +2 -0
  376. package/data/packages/wasp-config/dist/src/_private.d.ts.map +1 -0
  377. package/data/packages/wasp-config/dist/src/_private.js +1 -0
  378. package/data/packages/wasp-config/dist/src/appAnalyzer.d.ts +16 -0
  379. package/data/packages/wasp-config/dist/src/appAnalyzer.d.ts.map +1 -0
  380. package/data/packages/wasp-config/dist/src/appAnalyzer.js +34 -0
  381. package/data/packages/wasp-config/dist/src/appSpec.d.ts +223 -0
  382. package/data/packages/wasp-config/dist/src/appSpec.d.ts.map +1 -0
  383. package/data/packages/wasp-config/dist/src/appSpec.js +6 -0
  384. package/data/packages/wasp-config/dist/src/branded.d.ts +7 -0
  385. package/data/packages/wasp-config/dist/src/branded.d.ts.map +1 -0
  386. package/data/packages/wasp-config/dist/src/branded.js +1 -0
  387. package/data/packages/wasp-config/dist/src/cli.d.ts +6 -0
  388. package/data/packages/wasp-config/dist/src/cli.d.ts.map +1 -0
  389. package/data/packages/wasp-config/dist/src/cli.js +24 -0
  390. package/data/packages/wasp-config/dist/src/index.d.ts +8 -0
  391. package/data/packages/wasp-config/dist/src/index.d.ts.map +1 -0
  392. package/data/packages/wasp-config/dist/src/index.js +1 -0
  393. package/data/packages/wasp-config/dist/src/mapTsAppSpecToAppSpecDecls.d.ts +38 -0
  394. package/data/packages/wasp-config/dist/src/mapTsAppSpecToAppSpecDecls.d.ts.map +1 -0
  395. package/data/packages/wasp-config/dist/src/mapTsAppSpecToAppSpecDecls.js +294 -0
  396. package/data/packages/wasp-config/dist/src/publicApi/App.d.ts +24 -0
  397. package/data/packages/wasp-config/dist/src/publicApi/App.d.ts.map +1 -0
  398. package/data/packages/wasp-config/dist/src/publicApi/App.js +75 -0
  399. package/data/packages/wasp-config/dist/src/publicApi/tsAppSpec.d.ts +171 -0
  400. package/data/packages/wasp-config/dist/src/publicApi/tsAppSpec.d.ts.map +1 -0
  401. package/data/packages/wasp-config/dist/src/publicApi/tsAppSpec.js +1 -0
  402. package/data/packages/wasp-config/dist/src/run.d.ts +3 -0
  403. package/data/packages/wasp-config/dist/src/run.d.ts.map +1 -0
  404. package/data/packages/wasp-config/dist/src/run.js +18 -0
  405. package/data/packages/wasp-config/package-lock.json +3992 -0
  406. package/data/packages/wasp-config/package.json +39 -0
  407. package/main.js +9 -0
  408. package/package.json +1 -0
  409. package/readme.md +3 -0
  410. package/wasp-bin +0 -0
@@ -0,0 +1,184 @@
1
+ {{={= =}=}}
2
+ import { prisma } from 'wasp/server'
3
+
4
+ {=# isAuthEnabled =}
5
+ import { createInvalidCredentialsError } from 'wasp/auth/utils'
6
+ {=/ isAuthEnabled =}
7
+ import type {
8
+ {=# crud.operations.GetAll =}
9
+ GetAllQueryResolved,
10
+ {=/ crud.operations.GetAll =}
11
+ {=# crud.operations.Get =}
12
+ GetQueryResolved,
13
+ {=/ crud.operations.Get =}
14
+ {=# crud.operations.Create =}
15
+ CreateActionResolved,
16
+ {=/ crud.operations.Create =}
17
+ {=# crud.operations.Update =}
18
+ UpdateActionResolved,
19
+ {=/ crud.operations.Update =}
20
+ {=# crud.operations.Delete =}
21
+ DeleteActionResolved,
22
+ {=/ crud.operations.Delete =}
23
+ } from 'wasp/server/crud/{= crud.name =}'
24
+ {=# overrides.GetAll.isDefined =}
25
+ {=& overrides.GetAll.importStatement =}
26
+ {=/ overrides.GetAll.isDefined =}
27
+ {=# overrides.Get.isDefined =}
28
+ {=& overrides.Get.importStatement =}
29
+ {=/ overrides.Get.isDefined =}
30
+ {=# overrides.Create.isDefined =}
31
+ {=& overrides.Create.importStatement =}
32
+ {=/ overrides.Create.isDefined =}
33
+ {=# overrides.Update.isDefined =}
34
+ {=& overrides.Update.importStatement =}
35
+ {=/ overrides.Update.isDefined =}
36
+ {=# overrides.Delete.isDefined =}
37
+ {=& overrides.Delete.importStatement =}
38
+ {=/ overrides.Delete.isDefined =}
39
+
40
+ const entities = {
41
+ {= crud.entityUpper =}: prisma.{= crud.entityLower =},
42
+ }
43
+
44
+ {=!
45
+ // Let's explain this template on the GetAll operation example
46
+ =}
47
+ {=# crud.operations.GetAll =}
48
+ // Get All query
49
+ {=!
50
+ // 1. We either use the default implementation of the operation...
51
+ =}
52
+ {=^ overrides.GetAll.isDefined =}
53
+ const _waspGetAllQuery: GetAllQueryResolved = ((args, context) => {
54
+ {=^ crud.operations.GetAll.isPublic =}
55
+ throwIfNotAuthenticated(context)
56
+ {=/ crud.operations.GetAll.isPublic =}
57
+ return context.entities.{= crud.entityUpper =}.findMany();
58
+ });
59
+ {=/ overrides.GetAll.isDefined =}
60
+ {=!
61
+ // ... or the one defined in the overrides by the user. We use the "importIdentifier" property to
62
+ // reference the function from the overrides.
63
+ =}
64
+ {=# overrides.GetAll.isDefined =}
65
+ const _waspGetAllQuery = {= overrides.GetAll.importIdentifier =}
66
+ {=/ overrides.GetAll.isDefined =}
67
+
68
+ {=!
69
+ // 2. We define a function that is used as the Express route handler
70
+ =}
71
+ export async function getAllFn(args, context) {
72
+ return (_waspGetAllQuery as any)(args, {
73
+ ...context,
74
+ entities,
75
+ });
76
+ }
77
+ {=/ crud.operations.GetAll =}
78
+ {=!
79
+ // That's it! It is similar for all other operations.
80
+ =}
81
+
82
+ {=# crud.operations.Get =}
83
+ // Get query
84
+ {=^ overrides.Get.isDefined =}
85
+ const _waspGetQuery: GetQueryResolved = ((args, context) => {
86
+ {=^ crud.operations.Get.isPublic =}
87
+ throwIfNotAuthenticated(context)
88
+ {=/ crud.operations.Get.isPublic =}
89
+ return context.entities.{= crud.entityUpper =}.findUnique({ where: { id: args.id } });
90
+ });
91
+ {=/ overrides.Get.isDefined =}
92
+ {=# overrides.Get.isDefined =}
93
+ const _waspGetQuery = {= overrides.Get.importIdentifier =}
94
+ {=/ overrides.Get.isDefined =}
95
+
96
+ export async function getFn(args, context) {
97
+ return (_waspGetQuery as any)(args, {
98
+ ...context,
99
+ entities,
100
+ });
101
+ }
102
+ {=/ crud.operations.Get =}
103
+
104
+ {=# crud.operations.Create =}
105
+ // Create action
106
+ {=^ overrides.Create.isDefined =}
107
+ const _waspCreateAction: CreateActionResolved = ((args, context) => {
108
+ {=^ crud.operations.Create.isPublic =}
109
+ throwIfNotAuthenticated(context)
110
+ {=/ crud.operations.Create.isPublic =}
111
+ return context.entities.{= crud.entityUpper =}.create({ data: args });
112
+ });
113
+ {=/ overrides.Create.isDefined =}
114
+ {=# overrides.Create.isDefined =}
115
+ const _waspCreateAction = {= overrides.Create.importIdentifier =}
116
+ {=/ overrides.Create.isDefined =}
117
+
118
+ export async function createFn(args, context) {
119
+ return (_waspCreateAction as any)(args, {
120
+ ...context,
121
+ entities,
122
+ });
123
+ }
124
+ {=/ crud.operations.Create =}
125
+
126
+ {=# crud.operations.Update =}
127
+ // Update action
128
+ {=^ overrides.Update.isDefined =}
129
+ const _waspUpdateAction: UpdateActionResolved = ((args, context) => {
130
+ {=^ crud.operations.Update.isPublic =}
131
+ throwIfNotAuthenticated(context)
132
+ {=/ crud.operations.Update.isPublic =}
133
+ const { {= crud.idFieldName =}: idFieldValue, ...rest } = args
134
+ return context.entities.{= crud.entityUpper =}.update({
135
+ where: { {= crud.idFieldName =}: idFieldValue },
136
+ data: rest,
137
+ });
138
+ });
139
+ {=/ overrides.Update.isDefined =}
140
+ {=# overrides.Update.isDefined =}
141
+ const _waspUpdateAction = {= overrides.Update.importIdentifier =}
142
+ {=/ overrides.Update.isDefined =}
143
+
144
+ export async function updateFn(args, context) {
145
+ return (_waspUpdateAction as any)(args, {
146
+ ...context,
147
+ entities,
148
+ });
149
+ }
150
+ {=/ crud.operations.Update =}
151
+
152
+ {=# crud.operations.Delete =}
153
+ // Delete action
154
+ {=^ overrides.Delete.isDefined =}
155
+ const _waspDeleteAction: DeleteActionResolved = ((args, context) => {
156
+ {=^ crud.operations.Delete.isPublic =}
157
+ throwIfNotAuthenticated(context)
158
+ {=/ crud.operations.Delete.isPublic =}
159
+ const { {= crud.idFieldName =}: idFieldValue } = args
160
+ return context.entities.{= crud.entityUpper =}.delete({ where: { {= crud.idFieldName =}: idFieldValue } });
161
+ });
162
+ {=/ overrides.Delete.isDefined =}
163
+ {=# overrides.Delete.isDefined =}
164
+ const _waspDeleteAction = {= overrides.Delete.importIdentifier =}
165
+ {=/ overrides.Delete.isDefined =}
166
+
167
+ export async function deleteFn(args, context) {
168
+ return (_waspDeleteAction as any)(args, {
169
+ ...context,
170
+ entities,
171
+ });
172
+ }
173
+ {=/ crud.operations.Delete =}
174
+
175
+ function throwIfNotAuthenticated (context) {
176
+ {=# isAuthEnabled =}
177
+ if (!context.user) {
178
+ throw createInvalidCredentialsError()
179
+ }
180
+ {=/ isAuthEnabled =}
181
+ {=^ isAuthEnabled =}
182
+ // Auth is not enabled
183
+ {=/ isAuthEnabled =}
184
+ }
@@ -0,0 +1,37 @@
1
+ {{={= =}=}}
2
+
3
+ // This is a script that is used to seed the database. It is present here in the server project in
4
+ // order to have easy access to the server logic, like operations and the rest, since we often want
5
+ // to use that logic in our seeding.
6
+ // TODO: Consider in the future moving it into a a separate project (maybe db/ ?), while still
7
+ // maintaining access to logic from the server/ .
8
+
9
+ import { prisma, DbSeedFn } from 'wasp/server'
10
+
11
+ {=# dbSeeds =}
12
+ {=& importStatement =}
13
+ {=/ dbSeeds =}
14
+
15
+ const seeds = {
16
+ {=# dbSeeds =}
17
+ {= importIdentifier =},
18
+ {=/ dbSeeds =}
19
+ }
20
+
21
+ async function main() {
22
+ const nameOfSeedToRun = process.env.{= dbSeedNameEnvVarName =}
23
+ if (nameOfSeedToRun) {
24
+ console.log(`Running seed: ${nameOfSeedToRun}`)
25
+ } else {
26
+ console.error('Name of the seed to run not specified!')
27
+ }
28
+ await (seeds[nameOfSeedToRun] satisfies DbSeedFn)(prisma)
29
+ }
30
+
31
+ main()
32
+ .then(async () => { await prisma.$disconnect() })
33
+ .catch(async (e) => {
34
+ console.error(e)
35
+ await prisma.$disconnect()
36
+ process.exit(1)
37
+ })
@@ -0,0 +1,9 @@
1
+ {{={= =}=}}
2
+ import { registerJob } from '{= jobExecutorImportPath =}'
3
+ {=& jobPerformFn.importStatement =}
4
+ {=& jobDefinition.importStatement =}
5
+
6
+ registerJob({
7
+ job: {= jobDefinition.importIdentifier =},
8
+ jobFn: {= jobPerformFn.importIdentifier =},
9
+ })
@@ -0,0 +1,8 @@
1
+ {{={= =}=}}
2
+
3
+ // This module imports all jobs and is imported by the server to ensure
4
+ // any schedules that are not referenced are still loaded by NodeJS.
5
+
6
+ {=# jobs =}
7
+ import '../{= name =}.js'
8
+ {=/ jobs =}
@@ -0,0 +1,45 @@
1
+ {{={= =}=}}
2
+ import express from 'express'
3
+ import cookieParser from 'cookie-parser'
4
+ import logger from 'morgan'
5
+ import cors from 'cors'
6
+ import helmet from 'helmet'
7
+
8
+ import { config } from 'wasp/server'
9
+ import type { MiddlewareConfig, MiddlewareConfigFn } from 'wasp/server/middleware'
10
+ export type { MiddlewareConfig, MiddlewareConfigFn } from 'wasp/server/middleware'
11
+
12
+ {=# globalMiddlewareConfigFn.isDefined =}
13
+ {=& globalMiddlewareConfigFn.importStatement =}
14
+ {=/ globalMiddlewareConfigFn.isDefined =}
15
+ {=^ globalMiddlewareConfigFn.isDefined =}
16
+ const {=& globalMiddlewareConfigFn.importAlias =} = (mc: MiddlewareConfig) => mc
17
+ {=/ globalMiddlewareConfigFn.isDefined =}
18
+
19
+ // This is the set of middleware Wasp supplies by default.
20
+ // NOTE: Remember to update the docs of these change.
21
+ const defaultGlobalMiddlewareConfig: MiddlewareConfig = new Map([
22
+ ['helmet', helmet()],
23
+ ['cors', cors({ origin: config.allowedCORSOrigins })],
24
+ ['logger', logger('dev')],
25
+ ['express.json', express.json()],
26
+ ['express.urlencoded', express.urlencoded()],
27
+ ['cookieParser', cookieParser()]
28
+ ])
29
+
30
+ // This is the global middleware that is the result of applying the user's modifications.
31
+ // It will be used as the basis for Operations and APIs (unless they are further customized).
32
+ const globalMiddlewareConfig: MiddlewareConfig = {=& globalMiddlewareConfigFn.importAlias =}(defaultGlobalMiddlewareConfig)
33
+
34
+ // This function returns an array of Express middleware to be used by a router. It optionally
35
+ // accepts a function that can modify the global middleware for specific route customization.
36
+ export function globalMiddlewareConfigForExpress(middlewareConfigFn?: MiddlewareConfigFn): express.RequestHandler[] {
37
+ if (!middlewareConfigFn) {
38
+ return Array.from(globalMiddlewareConfig.values())
39
+ }
40
+
41
+ // Make a clone so they can't mess up the global Map for any other routes calling this.
42
+ const globalMiddlewareConfigClone = new Map(globalMiddlewareConfig)
43
+ const modifiedMiddlewareConfig = middlewareConfigFn(globalMiddlewareConfigClone)
44
+ return Array.from(modifiedMiddlewareConfig.values())
45
+ }
@@ -0,0 +1 @@
1
+ export * from './globalMiddleware.js'
@@ -0,0 +1,28 @@
1
+ {{={= =}=}}
2
+ import { deserialize, serialize } from 'wasp/core/serialization'
3
+ import { defineHandler } from 'wasp/server/utils'
4
+ {=# isAuthEnabled =}
5
+ import { makeAuthUserIfPossible } from 'wasp/auth/user'
6
+ {=/ isAuthEnabled =}
7
+
8
+ export function createOperation (handlerFn) {
9
+ return defineHandler(async (req, res) => {
10
+ const args = (req.body && deserialize(req.body)) || {}
11
+ const context = {
12
+ {=# isAuthEnabled =}
13
+ user: makeAuthUserIfPossible(req.user),
14
+ {=/ isAuthEnabled =}
15
+ }
16
+ const result = await handlerFn(args, context)
17
+ const serializedResult = serialize(result)
18
+ res.json(serializedResult)
19
+ })
20
+ }
21
+
22
+ export function createQuery(handlerFn) {
23
+ return createOperation(handlerFn)
24
+ }
25
+
26
+ export function createAction(handlerFn) {
27
+ return createOperation(handlerFn)
28
+ }
@@ -0,0 +1,18 @@
1
+ {{={= =}=}}
2
+ import { prisma } from 'wasp/server'
3
+
4
+ {=& jsFn.importStatement =}
5
+
6
+ {=! TODO: This template is exactly the same at the moment as one for actions,
7
+ consider in the future if it is worth removing this duplication. =}
8
+
9
+ export default async function (args, context) {
10
+ return ({= jsFn.importIdentifier =} as any)(args, {
11
+ ...context,
12
+ entities: {
13
+ {=# entities =}
14
+ {= name =}: prisma.{= prismaIdentifier =},
15
+ {=/ entities =}
16
+ },
17
+ })
18
+ }
@@ -0,0 +1,67 @@
1
+ {{={= =}=}}
2
+ import express from 'express'
3
+ import { prisma } from 'wasp/server'
4
+ import { defineHandler } from 'wasp/server/utils'
5
+ import { MiddlewareConfigFn, globalMiddlewareConfigForExpress } from '../../middleware/index.js'
6
+ {=# isAuthEnabled =}
7
+ import auth from 'wasp/core/auth'
8
+ import { type AuthUserData, makeAuthUserIfPossible } from 'wasp/auth/user'
9
+ {=/ isAuthEnabled =}
10
+
11
+ {=# apiNamespaces =}
12
+ {=& namespaceMiddlewareConfigFnImportStatement =}
13
+ {=/ apiNamespaces =}
14
+
15
+ {=# apiRoutes =}
16
+ {=& importStatement =}
17
+ {=# routeMiddlewareConfigFn.isDefined =}
18
+ {=& routeMiddlewareConfigFn.importStatement =}
19
+ {=/ routeMiddlewareConfigFn.isDefined =}
20
+ {=/ apiRoutes =}
21
+
22
+ const idFn: MiddlewareConfigFn = x => x
23
+
24
+ {=# apiRoutes =}
25
+ {=^ routeMiddlewareConfigFn.isDefined =}
26
+ const {=& routeMiddlewareConfigFn.importAlias =} = idFn
27
+ {=/ routeMiddlewareConfigFn.isDefined =}
28
+ {=/ apiRoutes =}
29
+
30
+ const router = express.Router()
31
+
32
+ {=# apiNamespaces =}
33
+ router.use('{= namespacePath =}', globalMiddlewareConfigForExpress({= namespaceMiddlewareConfigFnImportAlias =}))
34
+ {=/ apiNamespaces =}
35
+
36
+ {=# apiRoutes =}
37
+ const {= apiName =}Middleware = globalMiddlewareConfigForExpress({= routeMiddlewareConfigFn.importAlias =})
38
+ router.{= routeMethod =}(
39
+ '{= routePath =}',
40
+ {=# usesAuth =}
41
+ [auth, ...{= apiName =}Middleware],
42
+ {=/ usesAuth =}
43
+ {=^ usesAuth =}
44
+ {= apiName =}Middleware,
45
+ {=/ usesAuth =}
46
+ defineHandler(
47
+ (
48
+ req: Parameters<typeof {= importIdentifier =}>[0]{=# usesAuth =} & { user: AuthUserData | null }{=/ usesAuth =},
49
+ res: Parameters<typeof {= importIdentifier =}>[1],
50
+ ) => {
51
+ const context = {
52
+ {=# usesAuth =}
53
+ user: makeAuthUserIfPossible(req.user),
54
+ {=/ usesAuth =}
55
+ entities: {
56
+ {=# entities =}
57
+ {= name =}: prisma.{= prismaIdentifier =},
58
+ {=/ entities =}
59
+ },
60
+ }
61
+ return {= importIdentifier =}(req, res, context)
62
+ }
63
+ )
64
+ )
65
+ {=/ apiRoutes =}
66
+
67
+ export default router
@@ -0,0 +1,16 @@
1
+ {{={= =}=}}
2
+ import express from 'express'
3
+
4
+ import auth from 'wasp/core/auth'
5
+ import me from './me.js'
6
+ import logout from './logout.js'
7
+
8
+ import providersRouter from '../../auth/providers/index.js'
9
+
10
+ const router = express.Router()
11
+
12
+ router.get('/me', auth, me)
13
+ router.post('/logout', auth, logout)
14
+ router.use('/', providersRouter)
15
+
16
+ export default router
@@ -0,0 +1,12 @@
1
+ import { defineHandler } from 'wasp/server/utils'
2
+ import { createInvalidCredentialsError } from 'wasp/auth/utils'
3
+ import { invalidateSession } from 'wasp/auth/session'
4
+
5
+ export default defineHandler(async (req, res) => {
6
+ if (req.sessionId) {
7
+ await invalidateSession(req.sessionId)
8
+ res.json({ success: true })
9
+ } else {
10
+ throw createInvalidCredentialsError()
11
+ }
12
+ })
@@ -0,0 +1,10 @@
1
+ import { serialize } from 'wasp/core/serialization'
2
+ import { defineHandler } from 'wasp/server/utils'
3
+
4
+ export default defineHandler(async (req, res) => {
5
+ if (req.user) {
6
+ res.json(serialize(req.user))
7
+ } else {
8
+ res.json(serialize(null))
9
+ }
10
+ })
@@ -0,0 +1,46 @@
1
+ {{={= =}=}}
2
+ import express from 'express'
3
+ import * as crud from '../../crud/{= crud.name =}.js'
4
+ import { createAction, createQuery } from '../../middleware/operations.js'
5
+ {=# isAuthEnabled =}
6
+ import auth from 'wasp/core/auth'
7
+ {=/ isAuthEnabled =}
8
+
9
+ const _waspRouter = express.Router()
10
+
11
+ {=# isAuthEnabled =}
12
+ _waspRouter.use(auth)
13
+ {=/ isAuthEnabled =}
14
+
15
+ {=# crud.operations.Get =}
16
+ _waspRouter.post(
17
+ '/{= route =}',
18
+ createQuery(crud.getFn),
19
+ )
20
+ {=/ crud.operations.Get =}
21
+ {=# crud.operations.GetAll =}
22
+ _waspRouter.post(
23
+ '/{= route =}',
24
+ createQuery(crud.getAllFn),
25
+ )
26
+ {=/ crud.operations.GetAll =}
27
+ {=# crud.operations.Create =}
28
+ _waspRouter.post(
29
+ '/{= route =}',
30
+ createAction(crud.createFn),
31
+ )
32
+ {=/ crud.operations.Create =}
33
+ {=# crud.operations.Update =}
34
+ _waspRouter.post(
35
+ '/{= route =}',
36
+ createAction(crud.updateFn),
37
+ )
38
+ {=/ crud.operations.Update =}
39
+ {=# crud.operations.Delete =}
40
+ _waspRouter.post(
41
+ '/{= route =}',
42
+ createAction(crud.deleteFn),
43
+ )
44
+ {=/ crud.operations.Delete =}
45
+
46
+ export const {= crud.name =} = _waspRouter
@@ -0,0 +1,12 @@
1
+ {{={= =}=}}
2
+ import express from 'express'
3
+
4
+ {=# crudRouters =}
5
+ {=& importStatement =}
6
+ {=/ crudRouters =}
7
+
8
+ export const rootCrudRouter = express.Router()
9
+
10
+ {=# crudRouters =}
11
+ rootCrudRouter.use('/{= route =}', {= importIdentifier =})
12
+ {=/ crudRouters =}
@@ -0,0 +1,55 @@
1
+ {{={= =}=}}
2
+ import express from 'express'
3
+ import operations from './operations/index.js'
4
+ import { globalMiddlewareConfigForExpress } from '../middleware/index.js'
5
+ {=# isAuthEnabled =}
6
+ import auth from './auth/index.js'
7
+ {=/ isAuthEnabled =}
8
+ {=# areThereAnyCustomApiRoutes =}
9
+ import apis from './apis/index.js'
10
+ {=/ areThereAnyCustomApiRoutes =}
11
+ {=# areThereAnyCrudRoutes =}
12
+ import { rootCrudRouter } from './crud/index.js'
13
+ {=/ areThereAnyCrudRoutes =}
14
+ {=# isDevelopment =}
15
+ import { config } from 'wasp/server'
16
+ import { makeWrongPortPage } from '../views/wrong-port.js'
17
+ {=/ isDevelopment =}
18
+
19
+
20
+ const router = express.Router()
21
+ const middleware = globalMiddlewareConfigForExpress()
22
+
23
+ router.get('/', middleware,
24
+ {=# isDevelopment =}
25
+ function (_req, res) {
26
+ const data = {
27
+ appName: "{= appName =}",
28
+ frontendUrl: config.frontendUrl
29
+ };
30
+ const wrongPortPage = makeWrongPortPage(data);
31
+ res.status(200).type('html').send(wrongPortPage);
32
+ }
33
+ {=/ isDevelopment =}
34
+ {=^ isDevelopment =}
35
+ function (_req, res) {
36
+ res.status(200).send();
37
+ }
38
+ {=/ isDevelopment =}
39
+ )
40
+
41
+ {=# isAuthEnabled =}
42
+ router.use('/auth', middleware, auth)
43
+ {=/ isAuthEnabled =}
44
+ router.use('/{= operationsRouteInRootRouter =}', middleware, operations)
45
+ {=# areThereAnyCrudRoutes =}
46
+ router.use('/{= crudRouteInRootRouter =}', middleware, rootCrudRouter)
47
+ {=/ areThereAnyCrudRoutes =}
48
+ {=# areThereAnyCustomApiRoutes =}
49
+ // NOTE: Keep user-defined api routes last so they cannot override our routes.
50
+ // Additionally, do not add middleware to these routes here. Instead, we add
51
+ // it later to allow for middleware customization.
52
+ router.use(apis)
53
+ {=/ areThereAnyCustomApiRoutes =}
54
+
55
+ export default router
@@ -0,0 +1,5 @@
1
+ {{={= =}=}}
2
+ import { createAction } from '../../middleware/operations.js'
3
+ {=& operation.importStatement =}
4
+
5
+ export default createAction({= operation.importIdentifier =})
@@ -0,0 +1,5 @@
1
+ {{={= =}=}}
2
+ import { createQuery } from '../../middleware/operations.js'
3
+ {=& operation.importStatement =}
4
+
5
+ export default createQuery({= operation.importIdentifier =})
@@ -0,0 +1,18 @@
1
+ {{={= =}=}}
2
+ import express from 'express'
3
+
4
+ {=# isAuthEnabled =}
5
+ import auth from 'wasp/core/auth'
6
+ {=/ isAuthEnabled =}
7
+
8
+ {=# operationRoutes =}
9
+ {=& importStatement =}
10
+ {=/ operationRoutes =}
11
+
12
+ const router = express.Router()
13
+
14
+ {=# operationRoutes =}
15
+ router.post('{= routePath =}',{=# isUsingAuth =} auth,{=/ isUsingAuth =} {= importIdentifier =})
16
+ {=/ operationRoutes =}
17
+
18
+ export default router
@@ -0,0 +1,76 @@
1
+ {{={= =}=}}
2
+ import http from 'http'
3
+
4
+ import app from './app.js'
5
+ import { config } from 'wasp/server'
6
+
7
+ {=# setupFn.isDefined =}
8
+ {=& setupFn.importStatement =}
9
+ import { ServerSetupFn } from 'wasp/server'
10
+ import { ServerSetupFnContext } from 'wasp/server/types'
11
+ {=/ setupFn.isDefined =}
12
+
13
+ {=# isPgBossJobExecutorUsed =}
14
+ import { startPgBoss } from 'wasp/server/jobs/core/pgBoss'
15
+ import './jobs/core/allJobs.js'
16
+ {=/ isPgBossJobExecutorUsed =}
17
+
18
+ {=# userWebSocketFn.isDefined =}
19
+ import { init as initWebSocket } from './webSocket/initialization.js'
20
+ {=/ userWebSocketFn.isDefined =}
21
+
22
+ const startServer = async () => {
23
+ {=# isPgBossJobExecutorUsed =}
24
+ await startPgBoss()
25
+ {=/ isPgBossJobExecutorUsed =}
26
+
27
+ const port = normalizePort(config.port)
28
+ app.set('port', port)
29
+
30
+ const server = http.createServer(app)
31
+
32
+ {=# setupFn.isDefined =}
33
+ const serverSetupFnContext: ServerSetupFnContext = { app, server }
34
+ await ({= setupFn.importIdentifier =} as ServerSetupFn)(serverSetupFnContext)
35
+ {=/ setupFn.isDefined =}
36
+
37
+ {=# userWebSocketFn.isDefined =}
38
+ await initWebSocket(server)
39
+ {=/ userWebSocketFn.isDefined =}
40
+
41
+ server.listen(port)
42
+
43
+ server.on('error', (error: NodeJS.ErrnoException) => {
44
+ if (error.syscall !== 'listen') throw error
45
+ const bind = typeof port === 'string' ? 'Pipe ' + port : 'Port ' + port
46
+ // handle specific listen errors with friendly messages
47
+ switch (error.code) {
48
+ case 'EACCES':
49
+ console.error(bind + ' requires elevated privileges')
50
+ process.exit(1)
51
+ case 'EADDRINUSE':
52
+ console.error(bind + ' is already in use')
53
+ process.exit(1)
54
+ default:
55
+ throw error
56
+ }
57
+ })
58
+
59
+ server.on('listening', () => {
60
+ const addr = server.address()
61
+ const bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port
62
+ console.log('Server listening on ' + bind)
63
+ })
64
+ }
65
+
66
+ startServer().catch(e => console.error(e))
67
+
68
+ /**
69
+ * Normalize a port into a number, string, or false.
70
+ */
71
+ function normalizePort (val) {
72
+ const port = parseInt(val, 10)
73
+ if (isNaN(port)) return val // named pipe
74
+ if (port >= 0) return port // port number
75
+ return false
76
+ }