@wasp.sh/wasp-cli-darwin-arm64-unknown 0.23.0 → 0.24.0-rc.2

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 (233) hide show
  1. package/data/Cli/starters/basic/main.wasp.ts +60 -0
  2. package/data/Cli/starters/basic/package.json +4 -1
  3. package/data/Cli/starters/basic/prettier.config.mjs +9 -0
  4. package/data/Cli/starters/basic/src/tags/tags.wasp.ts +8 -0
  5. package/data/Cli/starters/basic/src/tasks/task.wasp.ts +16 -0
  6. package/data/Cli/starters/minimal/main.wasp.ts +12 -0
  7. package/data/Cli/starters/minimal/package.json +4 -1
  8. package/data/Cli/starters/skeleton/AGENTS.md +23 -0
  9. package/data/Cli/starters/skeleton/CLAUDE.md +23 -0
  10. package/data/Cli/starters/skeleton/tsconfig.json +5 -26
  11. package/data/Cli/starters/{ts-minimal → skeleton}/tsconfig.src.json +2 -1
  12. package/data/Cli/starters/{ts-minimal → skeleton}/tsconfig.wasp.json +5 -2
  13. package/data/Generator/libs/auth/{wasp.sh-lib-auth-0.23.0.tgz → wasp.sh-lib-auth-0.24.0.tgz} +0 -0
  14. package/data/Generator/libs/vite-ssr/{wasp.sh-lib-vite-ssr-0.23.0.tgz → wasp.sh-lib-vite-ssr-0.24.0.tgz} +0 -0
  15. package/data/Generator/templates/sdk/wasp/api/index.ts +51 -47
  16. package/data/Generator/templates/sdk/wasp/auth/email/actions/login.ts +5 -2
  17. package/data/Generator/templates/sdk/wasp/auth/email/actions/passwordReset.ts +9 -4
  18. package/data/Generator/templates/sdk/wasp/auth/email/actions/signup.ts +5 -2
  19. package/data/Generator/templates/sdk/wasp/auth/email/actions/verifyEmail.ts +5 -2
  20. package/data/Generator/templates/sdk/wasp/auth/responseSchemas.ts +10 -0
  21. package/data/Generator/templates/sdk/wasp/auth/useAuth.ts +2 -2
  22. package/data/Generator/templates/sdk/wasp/auth/username/actions/login.ts +5 -3
  23. package/data/Generator/templates/sdk/wasp/auth/username/actions/signup.ts +3 -2
  24. package/data/Generator/templates/sdk/wasp/client/app/layout.tsx +13 -20
  25. package/data/Generator/templates/sdk/wasp/client/app/pages/OAuthCallback.tsx +12 -11
  26. package/data/Generator/templates/sdk/wasp/client/env/schema.ts +8 -8
  27. package/data/Generator/templates/sdk/wasp/client/env.ts +2 -2
  28. package/data/Generator/templates/sdk/wasp/client/operations/internal/index.ts +4 -2
  29. package/data/Generator/templates/sdk/wasp/client/router/NavLink.tsx +21 -0
  30. package/data/Generator/templates/sdk/wasp/client/router/index.ts +2 -0
  31. package/data/Generator/templates/sdk/wasp/client/vite/plugins/typescriptCheck.ts +8 -4
  32. package/data/Generator/templates/sdk/wasp/client/vite/plugins/validateEnv.ts +72 -44
  33. package/data/Generator/templates/sdk/wasp/client/vite/plugins/wasp.ts +1 -1
  34. package/data/Generator/templates/sdk/wasp/tsconfig.json +3 -0
  35. package/data/Generator/templates/types/spec/register.ts +14 -0
  36. package/data/packages/deploy/dist/providers/railway/commands/setup/setup.js +9 -0
  37. package/data/packages/deploy/dist/providers/railway/jsonOutputSchemas.js +47 -0
  38. package/data/packages/deploy/dist/providers/railway/railwayService/deployment.js +45 -0
  39. package/data/packages/deploy/package-lock.json +2 -2
  40. package/data/packages/deploy/package.json +1 -1
  41. package/data/packages/prisma/package-lock.json +2 -2
  42. package/data/packages/prisma/package.json +1 -2
  43. package/data/packages/spec/dist/__tests__/cli.unit.test.js +128 -0
  44. package/data/packages/spec/dist/__tests__/legacy/appAnalyzer.unit.test.d.ts.map +1 -0
  45. package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/appAnalyzer.unit.test.js +3 -3
  46. package/data/packages/spec/dist/__tests__/legacy/mapTsAppSpecToAppSpecDecls.integration.test.d.ts.map +1 -0
  47. package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/mapTsAppSpecToAppSpecDecls.integration.test.js +2 -2
  48. package/data/packages/spec/dist/__tests__/legacy/mapTsAppSpecToAppSpecDecls.unit.test.d.ts.map +1 -0
  49. package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/mapTsAppSpecToAppSpecDecls.unit.test.js +4 -18
  50. package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/testFixtures.d.ts +4 -4
  51. package/data/packages/spec/dist/__tests__/legacy/testFixtures.d.ts.map +1 -0
  52. package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/testFixtures.js +2 -2
  53. package/data/packages/spec/dist/__tests__/legacy/testFixtures.test-d.d.ts.map +1 -0
  54. package/data/packages/spec/dist/__tests__/spec/appAnalyzer.unit.test.d.ts +2 -0
  55. package/data/packages/spec/dist/__tests__/spec/appAnalyzer.unit.test.d.ts.map +1 -0
  56. package/data/packages/spec/dist/__tests__/spec/appAnalyzer.unit.test.js +68 -0
  57. package/data/packages/spec/dist/__tests__/spec/mapApp.unit.test.d.ts +2 -0
  58. package/data/packages/spec/dist/__tests__/spec/mapApp.unit.test.d.ts.map +1 -0
  59. package/data/packages/spec/dist/__tests__/spec/mapApp.unit.test.js +814 -0
  60. package/data/packages/spec/dist/__tests__/spec/refObject.test-d.d.ts +2 -0
  61. package/data/packages/spec/dist/__tests__/spec/refObject.test-d.d.ts.map +1 -0
  62. package/data/packages/spec/dist/__tests__/spec/refObject.test-d.js +148 -0
  63. package/data/packages/spec/dist/__tests__/spec/refObject.unit.test.d.ts +2 -0
  64. package/data/packages/spec/dist/__tests__/spec/refObject.unit.test.d.ts.map +1 -0
  65. package/data/packages/spec/dist/__tests__/spec/refObject.unit.test.js +49 -0
  66. package/data/packages/spec/dist/__tests__/spec/refObjectPath.unit.test.d.ts +2 -0
  67. package/data/packages/spec/dist/__tests__/spec/refObjectPath.unit.test.d.ts.map +1 -0
  68. package/data/packages/spec/dist/__tests__/spec/refObjectPath.unit.test.js +204 -0
  69. package/data/packages/spec/dist/__tests__/spec/testFixtures.d.ts +85 -0
  70. package/data/packages/spec/dist/__tests__/spec/testFixtures.d.ts.map +1 -0
  71. package/data/packages/spec/dist/__tests__/spec/testFixtures.js +473 -0
  72. package/data/packages/spec/dist/__tests__/spec/tsAppSpec.test-d.d.ts +2 -0
  73. package/data/packages/spec/dist/__tests__/spec/tsAppSpec.test-d.d.ts.map +1 -0
  74. package/data/packages/spec/dist/__tests__/spec/tsAppSpec.test-d.js +44 -0
  75. package/data/packages/spec/dist/__tests__/spec-pipeline/pipeline.integration.test.d.ts +2 -0
  76. package/data/packages/spec/dist/__tests__/spec-pipeline/pipeline.integration.test.d.ts.map +1 -0
  77. package/data/packages/spec/dist/__tests__/spec-pipeline/pipeline.integration.test.js +218 -0
  78. package/data/packages/spec/dist/__tests__/spec-pipeline/transformWaspTsSpecFile/imports.unit.test.d.ts +2 -0
  79. package/data/packages/spec/dist/__tests__/spec-pipeline/transformWaspTsSpecFile/imports.unit.test.d.ts.map +1 -0
  80. package/data/packages/spec/dist/__tests__/spec-pipeline/transformWaspTsSpecFile/imports.unit.test.js +174 -0
  81. package/data/packages/spec/dist/__tests__/spec-pipeline/transformWaspTsSpecFile/refHelper.unit.test.d.ts +2 -0
  82. package/data/packages/spec/dist/__tests__/spec-pipeline/transformWaspTsSpecFile/refHelper.unit.test.d.ts.map +1 -0
  83. package/data/packages/spec/dist/__tests__/spec-pipeline/transformWaspTsSpecFile/refHelper.unit.test.js +119 -0
  84. package/data/packages/{wasp-config → spec}/dist/src/appSpec.d.ts +11 -4
  85. package/data/packages/spec/dist/src/appSpec.d.ts.map +1 -0
  86. package/data/packages/{wasp-config → spec}/dist/src/cli.d.ts +3 -1
  87. package/data/packages/spec/dist/src/cli.d.ts.map +1 -0
  88. package/data/packages/spec/dist/src/cli.js +28 -0
  89. package/data/packages/spec/dist/src/index.d.ts +2 -0
  90. package/data/packages/spec/dist/src/index.d.ts.map +1 -0
  91. package/data/packages/spec/dist/src/index.js +1 -0
  92. package/data/packages/spec/dist/src/internal.d.ts +2 -0
  93. package/data/packages/spec/dist/src/internal.d.ts.map +1 -0
  94. package/data/packages/spec/dist/src/internal.js +1 -0
  95. package/data/packages/spec/dist/src/legacy/_private.d.ts.map +1 -0
  96. package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/appAnalyzer.d.ts +1 -1
  97. package/data/packages/spec/dist/src/legacy/appAnalyzer.d.ts.map +1 -0
  98. package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/mapTsAppSpecToAppSpecDecls.d.ts +1 -1
  99. package/data/packages/spec/dist/src/legacy/mapTsAppSpecToAppSpecDecls.d.ts.map +1 -0
  100. package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/mapTsAppSpecToAppSpecDecls.js +3 -6
  101. package/data/packages/spec/dist/src/legacy/publicApi/App.d.ts.map +1 -0
  102. package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/publicApi/tsAppSpec.d.ts +3 -3
  103. package/data/packages/spec/dist/src/legacy/publicApi/tsAppSpec.d.ts.map +1 -0
  104. package/data/packages/spec/dist/src/run.js +28 -0
  105. package/data/packages/spec/dist/src/spec/appAnalyzer.d.ts +8 -0
  106. package/data/packages/spec/dist/src/spec/appAnalyzer.d.ts.map +1 -0
  107. package/data/packages/spec/dist/src/spec/appAnalyzer.js +35 -0
  108. package/data/packages/spec/dist/src/spec/mapApp.d.ts +54 -0
  109. package/data/packages/spec/dist/src/spec/mapApp.d.ts.map +1 -0
  110. package/data/packages/spec/dist/src/spec/mapApp.js +336 -0
  111. package/data/packages/spec/dist/src/spec/publicApi/constructors.d.ts +296 -0
  112. package/data/packages/spec/dist/src/spec/publicApi/constructors.d.ts.map +1 -0
  113. package/data/packages/spec/dist/src/spec/publicApi/constructors.js +277 -0
  114. package/data/packages/spec/dist/src/spec/publicApi/index.d.ts +5 -0
  115. package/data/packages/spec/dist/src/spec/publicApi/index.d.ts.map +1 -0
  116. package/data/packages/spec/dist/src/spec/publicApi/index.js +2 -0
  117. package/data/packages/spec/dist/src/spec/publicApi/register.d.ts +9 -0
  118. package/data/packages/spec/dist/src/spec/publicApi/register.d.ts.map +1 -0
  119. package/data/packages/spec/dist/src/spec/publicApi/register.js +1 -0
  120. package/data/packages/spec/dist/src/spec/publicApi/waspSpec.d.ts +872 -0
  121. package/data/packages/spec/dist/src/spec/publicApi/waspSpec.d.ts.map +1 -0
  122. package/data/packages/spec/dist/src/spec/publicApi/waspSpec.js +1 -0
  123. package/data/packages/spec/dist/src/spec/refObject.d.ts +95 -0
  124. package/data/packages/spec/dist/src/spec/refObject.d.ts.map +1 -0
  125. package/data/packages/spec/dist/src/spec/refObject.js +119 -0
  126. package/data/packages/spec/dist/src/spec/refObjectPath.d.ts +18 -0
  127. package/data/packages/spec/dist/src/spec/refObjectPath.d.ts.map +1 -0
  128. package/data/packages/spec/dist/src/spec/refObjectPath.js +79 -0
  129. package/data/packages/spec/dist/src/spec/specUserError.d.ts +9 -0
  130. package/data/packages/spec/dist/src/spec/specUserError.d.ts.map +1 -0
  131. package/data/packages/spec/dist/src/spec/specUserError.js +8 -0
  132. package/data/packages/spec/dist/src/spec-pipeline/common.d.ts +2 -0
  133. package/data/packages/spec/dist/src/spec-pipeline/common.d.ts.map +1 -0
  134. package/data/packages/spec/dist/src/spec-pipeline/common.js +1 -0
  135. package/data/packages/spec/dist/src/spec-pipeline/loadWaspTsSpec.d.ts +5 -0
  136. package/data/packages/spec/dist/src/spec-pipeline/loadWaspTsSpec.d.ts.map +1 -0
  137. package/data/packages/spec/dist/src/spec-pipeline/loadWaspTsSpec.js +46 -0
  138. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/apply.d.ts +4 -0
  139. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/apply.d.ts.map +1 -0
  140. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/apply.js +34 -0
  141. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/check.d.ts +3 -0
  142. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/check.d.ts.map +1 -0
  143. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/check.js +14 -0
  144. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/index.d.ts +5 -0
  145. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/index.d.ts.map +1 -0
  146. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/index.js +40 -0
  147. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/plan.d.ts +26 -0
  148. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/plan.d.ts.map +1 -0
  149. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/plan.js +57 -0
  150. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/index.d.ts +3 -0
  151. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/index.d.ts.map +1 -0
  152. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/index.js +8 -0
  153. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/apply.d.ts +4 -0
  154. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/apply.d.ts.map +1 -0
  155. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/apply.js +18 -0
  156. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/check.d.ts +3 -0
  157. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/check.d.ts.map +1 -0
  158. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/check.js +13 -0
  159. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/index.d.ts +5 -0
  160. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/index.d.ts.map +1 -0
  161. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/index.js +40 -0
  162. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/plan.d.ts +19 -0
  163. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/plan.d.ts.map +1 -0
  164. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/plan.js +60 -0
  165. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/util.d.ts +10 -0
  166. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/util.d.ts.map +1 -0
  167. package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/util.js +53 -0
  168. package/data/packages/spec/dist/src/spec-pipeline/typecheckPlugin/index.d.ts +5 -0
  169. package/data/packages/spec/dist/src/spec-pipeline/typecheckPlugin/index.d.ts.map +1 -0
  170. package/data/packages/spec/dist/src/spec-pipeline/typecheckPlugin/index.js +38 -0
  171. package/data/packages/spec/dist/src/spec-pipeline/typecheckPlugin/project.d.ts +9 -0
  172. package/data/packages/spec/dist/src/spec-pipeline/typecheckPlugin/project.d.ts.map +1 -0
  173. package/data/packages/spec/dist/src/spec-pipeline/typecheckPlugin/project.js +66 -0
  174. package/data/packages/spec/dist/src/typeUtils.d.ts +3 -0
  175. package/data/packages/spec/dist/src/typeUtils.d.ts.map +1 -0
  176. package/data/packages/spec/dist/src/typeUtils.js +1 -0
  177. package/data/packages/{wasp-config → spec}/package-lock.json +921 -1475
  178. package/data/packages/spec/package.json +48 -0
  179. package/data/packages/studio/package-lock.json +2 -2
  180. package/data/packages/studio/package.json +1 -1
  181. package/data/packages/ts-inspect/package-lock.json +2 -2
  182. package/data/packages/ts-inspect/package.json +1 -1
  183. package/package.json +1 -1
  184. package/wasp-bin +0 -0
  185. package/data/Cli/starters/basic/.prettierrc +0 -3
  186. package/data/Cli/starters/basic/main.wasp +0 -100
  187. package/data/Cli/starters/minimal/main.wasp +0 -14
  188. package/data/Cli/starters/ts-minimal/main.wasp.ts +0 -15
  189. package/data/Cli/starters/ts-minimal/package.json +0 -18
  190. package/data/Cli/starters/ts-minimal/schema.prisma +0 -10
  191. package/data/Cli/starters/ts-minimal/src/Main.css +0 -103
  192. package/data/Cli/starters/ts-minimal/src/MainPage.tsx +0 -37
  193. package/data/Cli/starters/ts-minimal/src/assets/logo.svg +0 -1
  194. package/data/Cli/starters/ts-minimal/tsconfig.json +0 -7
  195. package/data/Cli/starters/ts-minimal/vite.config.ts +0 -9
  196. package/data/packages/wasp-config/dist/__tests__/appAnalyzer.unit.test.d.ts.map +0 -1
  197. package/data/packages/wasp-config/dist/__tests__/cli.unit.test.js +0 -65
  198. package/data/packages/wasp-config/dist/__tests__/mapTsAppSpecToAppSpecDecls.integration.test.d.ts.map +0 -1
  199. package/data/packages/wasp-config/dist/__tests__/mapTsAppSpecToAppSpecDecls.unit.test.d.ts.map +0 -1
  200. package/data/packages/wasp-config/dist/__tests__/testFixtures.d.ts.map +0 -1
  201. package/data/packages/wasp-config/dist/__tests__/testFixtures.test-d.d.ts.map +0 -1
  202. package/data/packages/wasp-config/dist/src/_private.d.ts.map +0 -1
  203. package/data/packages/wasp-config/dist/src/appAnalyzer.d.ts.map +0 -1
  204. package/data/packages/wasp-config/dist/src/appSpec.d.ts.map +0 -1
  205. package/data/packages/wasp-config/dist/src/cli.d.ts.map +0 -1
  206. package/data/packages/wasp-config/dist/src/cli.js +0 -24
  207. package/data/packages/wasp-config/dist/src/index.d.ts +0 -8
  208. package/data/packages/wasp-config/dist/src/index.d.ts.map +0 -1
  209. package/data/packages/wasp-config/dist/src/index.js +0 -1
  210. package/data/packages/wasp-config/dist/src/mapTsAppSpecToAppSpecDecls.d.ts.map +0 -1
  211. package/data/packages/wasp-config/dist/src/publicApi/App.d.ts.map +0 -1
  212. package/data/packages/wasp-config/dist/src/publicApi/tsAppSpec.d.ts.map +0 -1
  213. package/data/packages/wasp-config/dist/src/run.js +0 -18
  214. package/data/packages/wasp-config/package.json +0 -40
  215. /package/data/packages/{wasp-config → spec}/dist/__tests__/cli.unit.test.d.ts +0 -0
  216. /package/data/packages/{wasp-config → spec}/dist/__tests__/cli.unit.test.d.ts.map +0 -0
  217. /package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/appAnalyzer.unit.test.d.ts +0 -0
  218. /package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/mapTsAppSpecToAppSpecDecls.integration.test.d.ts +0 -0
  219. /package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/mapTsAppSpecToAppSpecDecls.unit.test.d.ts +0 -0
  220. /package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/testFixtures.test-d.d.ts +0 -0
  221. /package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/testFixtures.test-d.js +0 -0
  222. /package/data/packages/{wasp-config → spec}/dist/src/appSpec.js +0 -0
  223. /package/data/packages/{wasp-config → spec}/dist/src/branded.d.ts +0 -0
  224. /package/data/packages/{wasp-config → spec}/dist/src/branded.d.ts.map +0 -0
  225. /package/data/packages/{wasp-config → spec}/dist/src/branded.js +0 -0
  226. /package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/_private.d.ts +0 -0
  227. /package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/_private.js +0 -0
  228. /package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/appAnalyzer.js +0 -0
  229. /package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/publicApi/App.d.ts +0 -0
  230. /package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/publicApi/App.js +0 -0
  231. /package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/publicApi/tsAppSpec.js +0 -0
  232. /package/data/packages/{wasp-config → spec}/dist/src/run.d.ts +0 -0
  233. /package/data/packages/{wasp-config → spec}/dist/src/run.d.ts.map +0 -0
@@ -2,7 +2,7 @@
2
2
  * This module maps the TsAppSpec-facing API to the internal representation of the app (AppSpec Decl).
3
3
  * All of the mapping functions are exported so that they can be individually tested.
4
4
  */
5
- import * as AppSpec from "./appSpec.js";
5
+ import * as AppSpec from "../appSpec.js";
6
6
  import * as TsAppSpec from "./publicApi/tsAppSpec.js";
7
7
  export declare function mapTsAppSpecToAppSpecDecls(tsAppSpec: TsAppSpec.TsAppSpec, entityNames: string[]): AppSpec.Decl[];
8
8
  export declare function mapOperation(config: TsAppSpec.QueryConfig, entityRefParser: RefParser<"Entity">): AppSpec.Query;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapTsAppSpecToAppSpecDecls.d.ts","sourceRoot":"","sources":["../../../src/legacy/mapTsAppSpecToAppSpecDecls.ts"],"names":[],"mappings":"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"}
@@ -108,13 +108,9 @@ entityRefParser, routeRefParser, auth, client, server, db, emailSender, webSocke
108
108
  };
109
109
  }
110
110
  export function mapAuth(auth, entityRefParser, routeRefParser) {
111
- const { userEntity, externalAuthEntity, methods, onAuthFailedRedirectTo, onAuthSucceededRedirectTo, onBeforeSignup, onAfterSignup, onAfterEmailVerified, onBeforeOAuthRedirect, onBeforeLogin, onAfterLogin, } = auth;
111
+ const { userEntity, methods, onAuthFailedRedirectTo, onAuthSucceededRedirectTo, onBeforeSignup, onAfterSignup, onAfterEmailVerified, onBeforeOAuthRedirect, onBeforeLogin, onAfterLogin, } = auth;
112
112
  return {
113
113
  userEntity: entityRefParser(userEntity),
114
- // TODO: Abstract away this pattern
115
- externalAuthEntity: externalAuthEntity === undefined
116
- ? undefined
117
- : entityRefParser(externalAuthEntity),
118
114
  methods: mapAuthMethods(methods, routeRefParser),
119
115
  onAuthFailedRedirectTo,
120
116
  onAuthSucceededRedirectTo,
@@ -128,9 +124,10 @@ export function mapAuth(auth, entityRefParser, routeRefParser) {
128
124
  }
129
125
  export function mapAuthMethods(methods, routeRefParser) {
130
126
  // TODO: check keyof danger, effective ts
131
- const { usernameAndPassword, discord, google, gitHub, keycloak, microsoft, email, } = methods;
127
+ const { usernameAndPassword, slack, discord, google, gitHub, keycloak, microsoft, email, } = methods;
132
128
  return {
133
129
  usernameAndPassword: usernameAndPassword && mapUsernameAndPassword(usernameAndPassword),
130
+ slack: slack && mapExternalAuth(slack),
134
131
  discord: discord && mapExternalAuth(discord),
135
132
  google: google && mapExternalAuth(google),
136
133
  gitHub: gitHub && mapExternalAuth(gitHub),
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../../src/legacy/publicApi/App.ts"],"names":[],"mappings":"AAAA;GACG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,qBAAa,GAAG;;IAMd,CAAC,eAAe,CAAC,IAAI,SAAS,CAAC,SAAS;gBAI5B,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,SAAS;IAqBrD,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI;IAIrE,YAAY,CACV,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,CAAC,kBAAkB,GACnC,IAAI;IAIP,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,SAAS,GAAG,IAAI;IAI/D,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,UAAU,GAAG,IAAI;IAInD,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI;IAIvD,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,UAAU,GAAG,IAAI;IAIjE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,GAAG,IAAI;IAI/C,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,iBAAiB,GAAG,IAAI;IAIjE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,SAAS,GAAG,IAAI;IAI/D,IAAI,CACF,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,CAAC,UAAU,GAC3B,SAAS,CAAC,QAAQ;IAKrB,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI;IAInE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI;IAInE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI;IAIvD,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,eAAe;CAGvD"}
@@ -1,5 +1,5 @@
1
- import * as AppSpec from "../appSpec.js";
2
- import { Branded } from "../branded.js";
1
+ import * as AppSpec from "../../appSpec.js";
2
+ import { Branded } from "../../branded.js";
3
3
  export type TsAppSpec = {
4
4
  app: {
5
5
  name: string;
@@ -48,7 +48,6 @@ export type HttpRoute = {
48
48
  export type AuthConfig = {
49
49
  userEntity: string;
50
50
  methods: AuthMethods;
51
- externalAuthEntity?: string;
52
51
  onAuthFailedRedirectTo: string;
53
52
  onAuthSucceededRedirectTo?: string;
54
53
  onBeforeSignup?: ExtImport;
@@ -60,6 +59,7 @@ export type AuthConfig = {
60
59
  };
61
60
  export type AuthMethods = {
62
61
  usernameAndPassword?: UsernameAndPasswordConfig;
62
+ slack?: ExternalAuthConfig;
63
63
  discord?: ExternalAuthConfig;
64
64
  google?: ExternalAuthConfig;
65
65
  gitHub?: ExternalAuthConfig;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsAppSpec.d.ts","sourceRoot":"","sources":["../../../../src/legacy/publicApi/tsAppSpec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ import { writeFileSync } from "fs";
3
+ import { parseProcessArgsOrThrow } from "./cli.js";
4
+ import { analyzeApp } from "./spec/appAnalyzer.js";
5
+ import { SpecUserError } from "./spec/specUserError.js";
6
+ await main(process.argv);
7
+ async function main(args) {
8
+ const { waspTsSpecPath, tsconfigPath, projectRootDir, specResultPath, entityNames, } = parseProcessArgsOrThrow(args);
9
+ const result = await analyze({
10
+ waspTsSpecPath,
11
+ tsconfigPath,
12
+ projectRootDir,
13
+ entityNames,
14
+ });
15
+ writeFileSync(specResultPath, JSON.stringify(result));
16
+ }
17
+ async function analyze(args) {
18
+ try {
19
+ const decls = await analyzeApp(args);
20
+ return { status: "ok", value: decls };
21
+ }
22
+ catch (error) {
23
+ if (error instanceof SpecUserError) {
24
+ return { status: "error", error: error.message };
25
+ }
26
+ throw error;
27
+ }
28
+ }
@@ -0,0 +1,8 @@
1
+ import * as AppSpec from "../appSpec.js";
2
+ export declare function analyzeApp({ waspTsSpecPath, tsconfigPath, projectRootDir, entityNames, }: {
3
+ waspTsSpecPath: string;
4
+ tsconfigPath: string;
5
+ projectRootDir: string;
6
+ entityNames: string[];
7
+ }): Promise<AppSpec.Decl[]>;
8
+ //# sourceMappingURL=appAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/spec/appAnalyzer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AAMzC,wBAAsB,UAAU,CAAC,EAC/B,cAAc,EACd,YAAY,EACZ,cAAc,EACd,WAAW,GACZ,EAAE;IACD,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAS1B"}
@@ -0,0 +1,35 @@
1
+ import { basename } from "path";
2
+ import { loadWaspTsSpecDefaultExport } from "../spec-pipeline/loadWaspTsSpec.js";
3
+ import { mapApp } from "./mapApp.js";
4
+ import { SpecUserError } from "./specUserError.js";
5
+ export async function analyzeApp({ waspTsSpecPath, tsconfigPath, projectRootDir, entityNames, }) {
6
+ const waspTsDefaultExport = await loadWaspTsSpecDefaultExport({
7
+ specPath: waspTsSpecPath,
8
+ tsconfigPath,
9
+ });
10
+ const app = getApp(basename(waspTsSpecPath), waspTsDefaultExport);
11
+ return mapApp(app, { entityNames, projectRootDir });
12
+ }
13
+ function getApp(waspTsSpecFile, waspTsDefaultExport) {
14
+ if (!waspTsDefaultExport) {
15
+ throw new SpecUserError("Could not load your app config. " +
16
+ `Make sure '${waspTsSpecFile}' includes a default export of the app.`);
17
+ }
18
+ if (!isApp(waspTsDefaultExport)) {
19
+ throw new SpecUserError(`The default export of '${waspTsSpecFile}' file must be of type 'App'` +
20
+ "Make sure you export the result of calling 'app({ ... })'");
21
+ }
22
+ return waspTsDefaultExport;
23
+ }
24
+ // TODO: This should probably live elsewhere.
25
+ // TODO: Make this more robust — structural duck-typing accepts any object with
26
+ // these keys. Consider branding the return value of `app()` with a
27
+ // non-enumerable symbol and checking for it here.
28
+ function isApp(value) {
29
+ return (typeof value === "object" &&
30
+ value !== null &&
31
+ "name" in value &&
32
+ "wasp" in value &&
33
+ "title" in value &&
34
+ "spec" in value);
35
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * This module maps the Wasp Spec to the internal representation of
3
+ * the app ({@link AppSpec.Decl}).
4
+ * All of the mapping functions are exported so that they can be individually
5
+ * tested.
6
+ */
7
+ import * as AppSpec from "../appSpec.js";
8
+ import * as WaspSpec from "./publicApi/waspSpec.js";
9
+ export declare function mapApp(app: WaspSpec.App, { projectRootDir, entityNames, }: {
10
+ projectRootDir: string;
11
+ entityNames: string[];
12
+ }): AppSpec.Decl[];
13
+ export type AppMapperContext = {
14
+ entityRefParser: RefParser<"Entity">;
15
+ routeRefParser: RefParser<"Route">;
16
+ mapRefObject: RefObjectMapper;
17
+ };
18
+ type RefObjectMapper = (refObject: unknown) => AppSpec.ExtImport;
19
+ export declare function mapPage(page: WaspSpec.Page, ctx: AppMapperContext): AppSpec.Page;
20
+ export declare function mapRoute(route: WaspSpec.Route): AppSpec.Route;
21
+ /**
22
+ * {@link WaspSpec.Route} through it's constructor can either:
23
+ * - Create a new {@link WaspSpec.Page}.
24
+ * - Reference an existing {@link WaspSpec.Page}.
25
+ *
26
+ * In case when it references an existing page, we don't want to
27
+ * count the reference as a separate {@link AppSpec.Page} specification.
28
+ */
29
+ export declare function dedupePageDecls(decls: AppSpec.GetDeclForType<"Page">[]): AppSpec.GetDeclForType<"Page">[];
30
+ export declare function mapQuery(query: WaspSpec.Query, ctx: AppMapperContext): AppSpec.Query;
31
+ export declare function mapAction(action: WaspSpec.Action, ctx: AppMapperContext): AppSpec.Action;
32
+ export declare function mapAuth(auth: WaspSpec.Auth, ctx: AppMapperContext): AppSpec.Auth;
33
+ export declare function mapAuthMethods(methods: WaspSpec.AuthMethods, ctx: AppMapperContext): AppSpec.AuthMethods;
34
+ export declare function mapUsernameAndPassword(usernameAndPassword: WaspSpec.UsernameAndPasswordConfig, ctx: AppMapperContext): AppSpec.UsernameAndPasswordConfig;
35
+ export declare function mapSocialAuth(socialAuth: WaspSpec.SocialAuthConfig, ctx: AppMapperContext): AppSpec.ExternalAuthConfig;
36
+ export declare function mapEmailAuth(emailAuth: WaspSpec.EmailAuthConfig, ctx: AppMapperContext): AppSpec.EmailAuthConfig;
37
+ export declare function mapEmailFlow(emailFlow: WaspSpec.EmailFlowConfig, ctx: AppMapperContext): AppSpec.EmailVerificationConfig;
38
+ export declare function mapApi(api: WaspSpec.Api, ctx: AppMapperContext): AppSpec.Api;
39
+ export declare function mapApiNamespace(apiNamespace: WaspSpec.ApiNamespace, ctx: AppMapperContext): AppSpec.ApiNamespace;
40
+ export declare function mapServer(server: WaspSpec.Server, ctx: AppMapperContext): AppSpec.Server;
41
+ export declare function mapClient(client: WaspSpec.Client, ctx: AppMapperContext): AppSpec.Client;
42
+ export declare function mapDb(db: WaspSpec.Db, ctx: AppMapperContext): AppSpec.Db;
43
+ export declare function mapEmailSender(emailSender: WaspSpec.EmailSender): AppSpec.EmailSender;
44
+ export declare function mapEmailFromField(emailFromField: WaspSpec.EmailFromField): AppSpec.EmailFromField;
45
+ export declare function mapWebSocket(webSocket: WaspSpec.WebSocket, ctx: AppMapperContext): AppSpec.WebSocket;
46
+ export declare function mapJob(job: WaspSpec.Job, ctx: AppMapperContext): AppSpec.Job;
47
+ export declare function mapCrud(crud: WaspSpec.Crud, ctx: AppMapperContext): AppSpec.Crud;
48
+ export declare function mapCrudOperations(operations: WaspSpec.CrudOperations, ctx: AppMapperContext): AppSpec.CrudOperations;
49
+ export declare function mapCrudOperationOptions(options: WaspSpec.CrudOperationOptions, ctx: AppMapperContext): AppSpec.CrudOperationOptions;
50
+ export declare function mapSchedule(schedule: WaspSpec.Schedule): AppSpec.Schedule;
51
+ export type RefParser<T extends AppSpec.DeclType> = (name: string) => AppSpec.Ref<T>;
52
+ export declare function makeRefParser<T extends AppSpec.DeclType>(declType: T, declNames: string[]): RefParser<T>;
53
+ export {};
54
+ //# sourceMappingURL=mapApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapApp.d.ts","sourceRoot":"","sources":["../../../src/spec/mapApp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,336 @@
1
+ /**
2
+ * This module maps the Wasp Spec to the internal representation of
3
+ * the app ({@link AppSpec.Decl}).
4
+ * All of the mapping functions are exported so that they can be individually
5
+ * tested.
6
+ */
7
+ import { getRefObjectDeclarationName, mapRefObject } from "./refObject.js";
8
+ import { SpecUserError } from "./specUserError.js";
9
+ export function mapApp(app, { projectRootDir, entityNames, }) {
10
+ const { name, wasp, title, head, auth, server, client, db, emailSender, webSocket, spec, } = app;
11
+ const flatSpec = flattenSpec(spec);
12
+ const entityRefParser = makeRefParser("Entity", entityNames);
13
+ const routeSpecElements = extractSpecElements("route", flatSpec);
14
+ const routeRefParser = makeRefParser("Route", routeSpecElements.map((r) => r.name));
15
+ const ctx = {
16
+ entityRefParser,
17
+ routeRefParser,
18
+ mapRefObject: (refObject) => mapRefObject(refObject, {
19
+ projectRootDir,
20
+ }),
21
+ };
22
+ // TODO: When you add all declarations, see if you can generalize better
23
+ // (e.g., maybe named parameters, maybe putting extractSpecElements inside
24
+ // mapToDecls)
25
+ const pageSpecElements = extractSpecElements("page", flatSpec);
26
+ const pageDecls = mapToDecls(pageSpecElements, "Page", (page) => getRefObjectDeclarationName(page.component), (page) => mapPage(page, ctx));
27
+ const routeDecls = mapToDecls(routeSpecElements, "Route", (route) => route.name, (route) => mapRoute(route));
28
+ const routePageDecls = mapToDecls(routeSpecElements, "Page", (route) => getRefObjectDeclarationName(route.page.component), (route) => mapPage(route.page, ctx));
29
+ const querySpecElements = extractSpecElements("query", flatSpec);
30
+ const queryDecls = mapToDecls(querySpecElements, "Query", (query) => getRefObjectDeclarationName(query.fn), (query) => mapQuery(query, ctx));
31
+ const actionSpecElements = extractSpecElements("action", flatSpec);
32
+ const actionDecls = mapToDecls(actionSpecElements, "Action", (action) => getRefObjectDeclarationName(action.fn), (action) => mapAction(action, ctx));
33
+ const apiSpecElements = extractSpecElements("api", flatSpec);
34
+ const apiDecls = mapToDecls(apiSpecElements, "Api", (api) => getRefObjectDeclarationName(api.fn), (api) => mapApi(api, ctx));
35
+ const apiNamespaceSpecElements = extractSpecElements("apiNamespace", flatSpec);
36
+ const apiNamespaceDecls = mapToDecls(apiNamespaceSpecElements, "ApiNamespace", (ns) => getRefObjectDeclarationName(ns.middlewareConfigFn), (ns) => mapApiNamespace(ns, ctx));
37
+ const jobSpecElements = extractSpecElements("job", flatSpec);
38
+ const jobDecls = mapToDecls(jobSpecElements, "Job", (job) => getRefObjectDeclarationName(job.fn), (job) => mapJob(job, ctx));
39
+ const crudSpecElements = extractSpecElements("crud", flatSpec);
40
+ const crudDecls = mapToDecls(crudSpecElements, "Crud", (crud) => crud.name, (crud) => mapCrud(crud, ctx));
41
+ const appDecl = {
42
+ declType: "App",
43
+ declName: name,
44
+ declValue: {
45
+ wasp,
46
+ title,
47
+ head,
48
+ auth: auth && mapAuth(auth, ctx),
49
+ server: server && mapServer(server, ctx),
50
+ client: client && mapClient(client, ctx),
51
+ db: db && mapDb(db, ctx),
52
+ emailSender: emailSender && mapEmailSender(emailSender),
53
+ webSocket: webSocket && mapWebSocket(webSocket, ctx),
54
+ },
55
+ };
56
+ return ensureAllDecls({
57
+ App: [appDecl],
58
+ Page: dedupePageDecls([...pageDecls, ...routePageDecls]),
59
+ Route: routeDecls,
60
+ Query: queryDecls,
61
+ Action: actionDecls,
62
+ Api: apiDecls,
63
+ ApiNamespace: apiNamespaceDecls,
64
+ Job: jobDecls,
65
+ Crud: crudDecls,
66
+ });
67
+ }
68
+ export function mapPage(page, ctx) {
69
+ const { component, authRequired } = page;
70
+ return {
71
+ component: ctx.mapRefObject(component),
72
+ authRequired,
73
+ };
74
+ }
75
+ export function mapRoute(route) {
76
+ const { path, prerender, lazy } = route;
77
+ return {
78
+ path,
79
+ to: {
80
+ name: getRefObjectDeclarationName(route.page.component),
81
+ declType: "Page",
82
+ },
83
+ prerender,
84
+ lazy,
85
+ };
86
+ }
87
+ /**
88
+ * {@link WaspSpec.Route} through it's constructor can either:
89
+ * - Create a new {@link WaspSpec.Page}.
90
+ * - Reference an existing {@link WaspSpec.Page}.
91
+ *
92
+ * In case when it references an existing page, we don't want to
93
+ * count the reference as a separate {@link AppSpec.Page} specification.
94
+ */
95
+ export function dedupePageDecls(decls) {
96
+ const pagesByDeclName = Map.groupBy(decls, (decls) => decls.declName);
97
+ return Array.from(pagesByDeclName.values()).map((pages) => pages.reduce((firstPage, currentPage) => {
98
+ if (!arePageDeclsEqual(currentPage, firstPage)) {
99
+ throw new SpecUserError(`Conflicting configurations for the page \`${firstPage.declName}\`:\n` +
100
+ `- Definition A: ${JSON.stringify(firstPage.declValue)}\n` +
101
+ `- Definition B: ${JSON.stringify(currentPage.declValue)}\n\n` +
102
+ "All page instances with the same import name must produce the same configuration.\n" +
103
+ "If the duplication was intentional, please use an alias to differentiate the pages.");
104
+ }
105
+ return firstPage;
106
+ }));
107
+ }
108
+ function arePageDeclsEqual(page1, page2) {
109
+ const isSameCanonicalPage = page1.declName === page2.declName;
110
+ return (isSameCanonicalPage &&
111
+ JSON.stringify(page1.declValue) === JSON.stringify(page2.declValue));
112
+ }
113
+ export function mapQuery(query, ctx) {
114
+ const { fn, entities, auth } = query;
115
+ return {
116
+ fn: ctx.mapRefObject(fn),
117
+ entities: entities?.map(ctx.entityRefParser),
118
+ auth,
119
+ };
120
+ }
121
+ export function mapAction(action, ctx) {
122
+ const { fn, entities, auth } = action;
123
+ return {
124
+ fn: ctx.mapRefObject(fn),
125
+ entities: entities?.map(ctx.entityRefParser),
126
+ auth,
127
+ };
128
+ }
129
+ export function mapAuth(auth, ctx) {
130
+ const { userEntity, methods, onAuthFailedRedirectTo, onAuthSucceededRedirectTo, onBeforeSignup, onAfterSignup, onAfterEmailVerified, onBeforeOAuthRedirect, onBeforeLogin, onAfterLogin, } = auth;
131
+ return {
132
+ userEntity: ctx.entityRefParser(userEntity),
133
+ methods: mapAuthMethods(methods, ctx),
134
+ onAuthFailedRedirectTo,
135
+ onAuthSucceededRedirectTo,
136
+ onBeforeSignup: onBeforeSignup && ctx.mapRefObject(onBeforeSignup),
137
+ onAfterSignup: onAfterSignup && ctx.mapRefObject(onAfterSignup),
138
+ onAfterEmailVerified: onAfterEmailVerified && ctx.mapRefObject(onAfterEmailVerified),
139
+ onBeforeOAuthRedirect: onBeforeOAuthRedirect && ctx.mapRefObject(onBeforeOAuthRedirect),
140
+ onBeforeLogin: onBeforeLogin && ctx.mapRefObject(onBeforeLogin),
141
+ onAfterLogin: onAfterLogin && ctx.mapRefObject(onAfterLogin),
142
+ };
143
+ }
144
+ export function mapAuthMethods(methods, ctx) {
145
+ const { usernameAndPassword, slack, discord, google, gitHub, keycloak, microsoft, email, } = methods;
146
+ return {
147
+ usernameAndPassword: usernameAndPassword && mapUsernameAndPassword(usernameAndPassword, ctx),
148
+ slack: slack && mapSocialAuth(slack, ctx),
149
+ discord: discord && mapSocialAuth(discord, ctx),
150
+ google: google && mapSocialAuth(google, ctx),
151
+ gitHub: gitHub && mapSocialAuth(gitHub, ctx),
152
+ keycloak: keycloak && mapSocialAuth(keycloak, ctx),
153
+ microsoft: microsoft && mapSocialAuth(microsoft, ctx),
154
+ email: email && mapEmailAuth(email, ctx),
155
+ };
156
+ }
157
+ export function mapUsernameAndPassword(usernameAndPassword, ctx) {
158
+ const { userSignupFields } = usernameAndPassword;
159
+ return {
160
+ userSignupFields: userSignupFields && ctx.mapRefObject(userSignupFields),
161
+ };
162
+ }
163
+ export function mapSocialAuth(socialAuth, ctx) {
164
+ const { configFn, userSignupFields } = socialAuth;
165
+ return {
166
+ configFn: configFn && ctx.mapRefObject(configFn),
167
+ userSignupFields: userSignupFields && ctx.mapRefObject(userSignupFields),
168
+ };
169
+ }
170
+ export function mapEmailAuth(emailAuth, ctx) {
171
+ const { userSignupFields, fromField, emailVerification, passwordReset } = emailAuth;
172
+ return {
173
+ userSignupFields: userSignupFields && ctx.mapRefObject(userSignupFields),
174
+ fromField: mapEmailFromField(fromField),
175
+ emailVerification: mapEmailFlow(emailVerification, ctx),
176
+ passwordReset: mapEmailFlow(passwordReset, ctx),
177
+ };
178
+ }
179
+ export function mapEmailFlow(emailFlow, ctx) {
180
+ const { getEmailContentFn, clientRoute } = emailFlow;
181
+ return {
182
+ getEmailContentFn: getEmailContentFn && ctx.mapRefObject(getEmailContentFn),
183
+ clientRoute: ctx.routeRefParser(clientRoute),
184
+ };
185
+ }
186
+ export function mapApi(api, ctx) {
187
+ const { method, path, fn, middlewareConfigFn, entities, auth } = api;
188
+ return {
189
+ fn: ctx.mapRefObject(fn),
190
+ middlewareConfigFn: middlewareConfigFn && ctx.mapRefObject(middlewareConfigFn),
191
+ entities: entities?.map(ctx.entityRefParser),
192
+ httpRoute: [method, path],
193
+ auth,
194
+ };
195
+ }
196
+ export function mapApiNamespace(apiNamespace, ctx) {
197
+ const { middlewareConfigFn, path } = apiNamespace;
198
+ return {
199
+ middlewareConfigFn: ctx.mapRefObject(middlewareConfigFn),
200
+ path,
201
+ };
202
+ }
203
+ export function mapServer(server, ctx) {
204
+ const { setupFn, middlewareConfigFn, envValidationSchema } = server;
205
+ return {
206
+ setupFn: setupFn && ctx.mapRefObject(setupFn),
207
+ middlewareConfigFn: middlewareConfigFn && ctx.mapRefObject(middlewareConfigFn),
208
+ envValidationSchema: envValidationSchema && ctx.mapRefObject(envValidationSchema),
209
+ };
210
+ }
211
+ export function mapClient(client, ctx) {
212
+ const { rootComponent, setupFn, baseDir, envValidationSchema } = client;
213
+ return {
214
+ rootComponent: rootComponent && ctx.mapRefObject(rootComponent),
215
+ setupFn: setupFn && ctx.mapRefObject(setupFn),
216
+ baseDir,
217
+ envValidationSchema: envValidationSchema && ctx.mapRefObject(envValidationSchema),
218
+ };
219
+ }
220
+ export function mapDb(db, ctx) {
221
+ const { seeds, prismaSetupFn } = db;
222
+ return {
223
+ seeds: seeds?.map(ctx.mapRefObject),
224
+ prismaSetupFn: prismaSetupFn && ctx.mapRefObject(prismaSetupFn),
225
+ };
226
+ }
227
+ export function mapEmailSender(emailSender) {
228
+ const { provider, defaultFrom } = emailSender;
229
+ return {
230
+ provider,
231
+ defaultFrom: defaultFrom && mapEmailFromField(defaultFrom),
232
+ };
233
+ }
234
+ export function mapEmailFromField(emailFromField) {
235
+ return {
236
+ name: emailFromField.name,
237
+ email: emailFromField.email,
238
+ };
239
+ }
240
+ export function mapWebSocket(webSocket, ctx) {
241
+ const { fn, autoConnect } = webSocket;
242
+ return {
243
+ fn: ctx.mapRefObject(fn),
244
+ autoConnect,
245
+ };
246
+ }
247
+ export function mapJob(job, ctx) {
248
+ const { fn, executor, schedule, entities, performExecutorOptions } = job;
249
+ return {
250
+ executor,
251
+ perform: {
252
+ fn: ctx.mapRefObject(fn),
253
+ executorOptions: performExecutorOptions,
254
+ },
255
+ schedule: schedule && mapSchedule(schedule),
256
+ entities: entities?.map(ctx.entityRefParser),
257
+ };
258
+ }
259
+ export function mapCrud(crud, ctx) {
260
+ const { entity, operations } = crud;
261
+ return {
262
+ entity: ctx.entityRefParser(entity),
263
+ operations: mapCrudOperations(operations, ctx),
264
+ };
265
+ }
266
+ export function mapCrudOperations(operations, ctx) {
267
+ const { get, getAll, create, update, delete: del } = operations;
268
+ return {
269
+ get: get && mapCrudOperationOptions(get, ctx),
270
+ getAll: getAll && mapCrudOperationOptions(getAll, ctx),
271
+ create: create && mapCrudOperationOptions(create, ctx),
272
+ update: update && mapCrudOperationOptions(update, ctx),
273
+ delete: del && mapCrudOperationOptions(del, ctx),
274
+ };
275
+ }
276
+ export function mapCrudOperationOptions(options, ctx) {
277
+ const { isPublic, overrideFn } = options;
278
+ return {
279
+ isPublic,
280
+ overrideFn: overrideFn && ctx.mapRefObject(overrideFn),
281
+ };
282
+ }
283
+ export function mapSchedule(schedule) {
284
+ const { cron, args, executorOptions } = schedule;
285
+ return {
286
+ cron,
287
+ args,
288
+ executorOptions,
289
+ };
290
+ }
291
+ export function makeRefParser(declType, declNames) {
292
+ return function parseRef(potentialRef) {
293
+ if (!declNames.includes(potentialRef)) {
294
+ throw new SpecUserError(`Invalid \`${declType}\` reference: \`${potentialRef}\`\n` +
295
+ `Please make sure that \`${potentialRef}\` is actually defined.`);
296
+ }
297
+ return {
298
+ name: potentialRef,
299
+ declType,
300
+ };
301
+ };
302
+ }
303
+ function extractSpecElements(id, spec) {
304
+ return spec.filter((p) => p.kind === id);
305
+ }
306
+ function mapToDecls(items, declType, deriveName, mapValue) {
307
+ return items.map((item) => ({
308
+ declType,
309
+ declName: deriveName(item),
310
+ declValue: mapValue(item),
311
+ }));
312
+ }
313
+ function flattenSpec(spec) {
314
+ // We assert the `[spec]` as a `SpecElement[]` to avoid
315
+ // inifnite recursion of the `WaspSpec.Spec` type.
316
+ return [spec].flat(Infinity);
317
+ }
318
+ /**
319
+ * The point of this function is to enforce exhaustivness over all AppSpec
320
+ * declaration types, ensuring we don't forget to include anything.
321
+ * Check the original comment for details: https://github.com/wasp-lang/wasp/pull/2393#discussion_r1866620833
322
+ *
323
+ * TODO: The new spec bundles all specifications (queries, actions...) together in
324
+ * the `spec` array, so there's no need to go through them one by one.
325
+ *
326
+ * We'd likely be better off by:
327
+ * 1. Mapping the entire array with a dispatcher that calls the correct
328
+ * mapper depending on the declaration's kind
329
+ * 2. Passing this mapped array into the app spec (which expects them all on
330
+ * the same level anyway).
331
+ * We'll likely lose some mapping type safety in the process though. Explore
332
+ * when we're done with the port from legacy to the new spec.
333
+ */
334
+ function ensureAllDecls(decls) {
335
+ return Object.values(decls).flat();
336
+ }