@wasp.sh/wasp-cli-darwin-arm64-unknown 0.23.0 → 0.24.0-rc.3
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.
- package/data/Cli/starters/basic/main.wasp.ts +60 -0
- package/data/Cli/starters/basic/package.json +4 -1
- package/data/Cli/starters/basic/prettier.config.mjs +9 -0
- package/data/Cli/starters/basic/src/tags/tags.wasp.ts +8 -0
- package/data/Cli/starters/basic/src/tasks/task.wasp.ts +16 -0
- package/data/Cli/starters/minimal/main.wasp.ts +12 -0
- package/data/Cli/starters/minimal/package.json +4 -1
- package/data/Cli/starters/skeleton/AGENTS.md +23 -0
- package/data/Cli/starters/skeleton/CLAUDE.md +23 -0
- package/data/Cli/starters/skeleton/tsconfig.json +5 -26
- package/data/Cli/starters/{ts-minimal → skeleton}/tsconfig.src.json +2 -1
- package/data/Cli/starters/{ts-minimal → skeleton}/tsconfig.wasp.json +5 -2
- package/data/Generator/libs/auth/{wasp.sh-lib-auth-0.23.0.tgz → wasp.sh-lib-auth-0.24.0.tgz} +0 -0
- 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
- package/data/Generator/templates/sdk/wasp/api/index.ts +51 -47
- package/data/Generator/templates/sdk/wasp/auth/email/actions/login.ts +5 -2
- package/data/Generator/templates/sdk/wasp/auth/email/actions/passwordReset.ts +9 -4
- package/data/Generator/templates/sdk/wasp/auth/email/actions/signup.ts +5 -2
- package/data/Generator/templates/sdk/wasp/auth/email/actions/verifyEmail.ts +5 -2
- package/data/Generator/templates/sdk/wasp/auth/responseSchemas.ts +10 -0
- package/data/Generator/templates/sdk/wasp/auth/useAuth.ts +2 -2
- package/data/Generator/templates/sdk/wasp/auth/username/actions/login.ts +5 -3
- package/data/Generator/templates/sdk/wasp/auth/username/actions/signup.ts +3 -2
- package/data/Generator/templates/sdk/wasp/client/app/layout.tsx +13 -20
- package/data/Generator/templates/sdk/wasp/client/app/pages/OAuthCallback.tsx +12 -11
- package/data/Generator/templates/sdk/wasp/client/env/schema.ts +8 -8
- package/data/Generator/templates/sdk/wasp/client/env.ts +2 -2
- package/data/Generator/templates/sdk/wasp/client/operations/internal/index.ts +4 -2
- package/data/Generator/templates/sdk/wasp/client/router/NavLink.tsx +21 -0
- package/data/Generator/templates/sdk/wasp/client/router/index.ts +2 -0
- package/data/Generator/templates/sdk/wasp/client/vite/plugins/typescriptCheck.ts +8 -4
- package/data/Generator/templates/sdk/wasp/client/vite/plugins/validateEnv.ts +72 -44
- package/data/Generator/templates/sdk/wasp/client/vite/plugins/wasp.ts +1 -1
- package/data/Generator/templates/sdk/wasp/tsconfig.json +3 -0
- package/data/Generator/templates/types/spec/register.ts +14 -0
- package/data/packages/deploy/dist/providers/railway/commands/setup/setup.js +9 -0
- package/data/packages/deploy/dist/providers/railway/jsonOutputSchemas.js +47 -0
- package/data/packages/deploy/dist/providers/railway/railwayService/deployment.js +45 -0
- package/data/packages/deploy/package-lock.json +2 -2
- package/data/packages/deploy/package.json +1 -1
- package/data/packages/prisma/package-lock.json +2 -2
- package/data/packages/prisma/package.json +1 -2
- package/data/packages/spec/dist/__tests__/cli.unit.test.js +128 -0
- package/data/packages/spec/dist/__tests__/legacy/appAnalyzer.unit.test.d.ts.map +1 -0
- package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/appAnalyzer.unit.test.js +3 -3
- package/data/packages/spec/dist/__tests__/legacy/mapTsAppSpecToAppSpecDecls.integration.test.d.ts.map +1 -0
- package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/mapTsAppSpecToAppSpecDecls.integration.test.js +2 -2
- package/data/packages/spec/dist/__tests__/legacy/mapTsAppSpecToAppSpecDecls.unit.test.d.ts.map +1 -0
- package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/mapTsAppSpecToAppSpecDecls.unit.test.js +4 -18
- package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/testFixtures.d.ts +4 -4
- package/data/packages/spec/dist/__tests__/legacy/testFixtures.d.ts.map +1 -0
- package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/testFixtures.js +2 -2
- package/data/packages/spec/dist/__tests__/legacy/testFixtures.test-d.d.ts.map +1 -0
- package/data/packages/spec/dist/__tests__/spec/appAnalyzer.unit.test.d.ts +2 -0
- package/data/packages/spec/dist/__tests__/spec/appAnalyzer.unit.test.d.ts.map +1 -0
- package/data/packages/spec/dist/__tests__/spec/appAnalyzer.unit.test.js +68 -0
- package/data/packages/spec/dist/__tests__/spec/mapApp.unit.test.d.ts +2 -0
- package/data/packages/spec/dist/__tests__/spec/mapApp.unit.test.d.ts.map +1 -0
- package/data/packages/spec/dist/__tests__/spec/mapApp.unit.test.js +814 -0
- package/data/packages/spec/dist/__tests__/spec/refObject.test-d.d.ts +2 -0
- package/data/packages/spec/dist/__tests__/spec/refObject.test-d.d.ts.map +1 -0
- package/data/packages/spec/dist/__tests__/spec/refObject.test-d.js +148 -0
- package/data/packages/spec/dist/__tests__/spec/refObject.unit.test.d.ts +2 -0
- package/data/packages/spec/dist/__tests__/spec/refObject.unit.test.d.ts.map +1 -0
- package/data/packages/spec/dist/__tests__/spec/refObject.unit.test.js +49 -0
- package/data/packages/spec/dist/__tests__/spec/refObjectPath.unit.test.d.ts +2 -0
- package/data/packages/spec/dist/__tests__/spec/refObjectPath.unit.test.d.ts.map +1 -0
- package/data/packages/spec/dist/__tests__/spec/refObjectPath.unit.test.js +204 -0
- package/data/packages/spec/dist/__tests__/spec/testFixtures.d.ts +85 -0
- package/data/packages/spec/dist/__tests__/spec/testFixtures.d.ts.map +1 -0
- package/data/packages/spec/dist/__tests__/spec/testFixtures.js +473 -0
- package/data/packages/spec/dist/__tests__/spec/tsAppSpec.test-d.d.ts +2 -0
- package/data/packages/spec/dist/__tests__/spec/tsAppSpec.test-d.d.ts.map +1 -0
- package/data/packages/spec/dist/__tests__/spec/tsAppSpec.test-d.js +44 -0
- package/data/packages/spec/dist/__tests__/spec-pipeline/pipeline.integration.test.d.ts +2 -0
- package/data/packages/spec/dist/__tests__/spec-pipeline/pipeline.integration.test.d.ts.map +1 -0
- package/data/packages/spec/dist/__tests__/spec-pipeline/pipeline.integration.test.js +218 -0
- package/data/packages/spec/dist/__tests__/spec-pipeline/transformWaspTsSpecFile/imports.unit.test.d.ts +2 -0
- package/data/packages/spec/dist/__tests__/spec-pipeline/transformWaspTsSpecFile/imports.unit.test.d.ts.map +1 -0
- package/data/packages/spec/dist/__tests__/spec-pipeline/transformWaspTsSpecFile/imports.unit.test.js +174 -0
- package/data/packages/spec/dist/__tests__/spec-pipeline/transformWaspTsSpecFile/refHelper.unit.test.d.ts +2 -0
- package/data/packages/spec/dist/__tests__/spec-pipeline/transformWaspTsSpecFile/refHelper.unit.test.d.ts.map +1 -0
- package/data/packages/spec/dist/__tests__/spec-pipeline/transformWaspTsSpecFile/refHelper.unit.test.js +119 -0
- package/data/packages/{wasp-config → spec}/dist/src/appSpec.d.ts +11 -4
- package/data/packages/spec/dist/src/appSpec.d.ts.map +1 -0
- package/data/packages/{wasp-config → spec}/dist/src/cli.d.ts +3 -1
- package/data/packages/spec/dist/src/cli.d.ts.map +1 -0
- package/data/packages/spec/dist/src/cli.js +28 -0
- package/data/packages/spec/dist/src/index.d.ts +2 -0
- package/data/packages/spec/dist/src/index.d.ts.map +1 -0
- package/data/packages/spec/dist/src/index.js +1 -0
- package/data/packages/spec/dist/src/internal.d.ts +2 -0
- package/data/packages/spec/dist/src/internal.d.ts.map +1 -0
- package/data/packages/spec/dist/src/internal.js +1 -0
- package/data/packages/spec/dist/src/legacy/_private.d.ts.map +1 -0
- package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/appAnalyzer.d.ts +1 -1
- package/data/packages/spec/dist/src/legacy/appAnalyzer.d.ts.map +1 -0
- package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/mapTsAppSpecToAppSpecDecls.d.ts +1 -1
- package/data/packages/spec/dist/src/legacy/mapTsAppSpecToAppSpecDecls.d.ts.map +1 -0
- package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/mapTsAppSpecToAppSpecDecls.js +3 -6
- package/data/packages/spec/dist/src/legacy/publicApi/App.d.ts.map +1 -0
- package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/publicApi/tsAppSpec.d.ts +3 -3
- package/data/packages/spec/dist/src/legacy/publicApi/tsAppSpec.d.ts.map +1 -0
- package/data/packages/spec/dist/src/run.js +28 -0
- package/data/packages/spec/dist/src/spec/appAnalyzer.d.ts +8 -0
- package/data/packages/spec/dist/src/spec/appAnalyzer.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec/appAnalyzer.js +35 -0
- package/data/packages/spec/dist/src/spec/mapApp.d.ts +54 -0
- package/data/packages/spec/dist/src/spec/mapApp.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec/mapApp.js +336 -0
- package/data/packages/spec/dist/src/spec/publicApi/constructors.d.ts +296 -0
- package/data/packages/spec/dist/src/spec/publicApi/constructors.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec/publicApi/constructors.js +277 -0
- package/data/packages/spec/dist/src/spec/publicApi/index.d.ts +5 -0
- package/data/packages/spec/dist/src/spec/publicApi/index.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec/publicApi/index.js +2 -0
- package/data/packages/spec/dist/src/spec/publicApi/register.d.ts +9 -0
- package/data/packages/spec/dist/src/spec/publicApi/register.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec/publicApi/register.js +1 -0
- package/data/packages/spec/dist/src/spec/publicApi/waspSpec.d.ts +872 -0
- package/data/packages/spec/dist/src/spec/publicApi/waspSpec.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec/publicApi/waspSpec.js +1 -0
- package/data/packages/spec/dist/src/spec/refObject.d.ts +95 -0
- package/data/packages/spec/dist/src/spec/refObject.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec/refObject.js +119 -0
- package/data/packages/spec/dist/src/spec/refObjectPath.d.ts +18 -0
- package/data/packages/spec/dist/src/spec/refObjectPath.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec/refObjectPath.js +79 -0
- package/data/packages/spec/dist/src/spec/specUserError.d.ts +9 -0
- package/data/packages/spec/dist/src/spec/specUserError.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec/specUserError.js +8 -0
- package/data/packages/spec/dist/src/spec-pipeline/common.d.ts +2 -0
- package/data/packages/spec/dist/src/spec-pipeline/common.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/common.js +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/loadWaspTsSpec.d.ts +5 -0
- package/data/packages/spec/dist/src/spec-pipeline/loadWaspTsSpec.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/loadWaspTsSpec.js +46 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/apply.d.ts +4 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/apply.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/apply.js +34 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/check.d.ts +3 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/check.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/check.js +14 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/index.d.ts +5 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/index.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/index.js +40 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/plan.d.ts +26 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/plan.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/imports/plan.js +57 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/index.d.ts +3 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/index.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/index.js +8 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/apply.d.ts +4 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/apply.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/apply.js +18 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/check.d.ts +3 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/check.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/check.js +13 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/index.d.ts +5 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/index.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/index.js +40 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/plan.d.ts +19 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/plan.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/refHelper/plan.js +60 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/util.d.ts +10 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/util.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/transformWaspTsSpecFilesPlugin/util.js +53 -0
- package/data/packages/spec/dist/src/spec-pipeline/typecheckPlugin/index.d.ts +5 -0
- package/data/packages/spec/dist/src/spec-pipeline/typecheckPlugin/index.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/typecheckPlugin/index.js +38 -0
- package/data/packages/spec/dist/src/spec-pipeline/typecheckPlugin/project.d.ts +9 -0
- package/data/packages/spec/dist/src/spec-pipeline/typecheckPlugin/project.d.ts.map +1 -0
- package/data/packages/spec/dist/src/spec-pipeline/typecheckPlugin/project.js +66 -0
- package/data/packages/spec/dist/src/typeUtils.d.ts +3 -0
- package/data/packages/spec/dist/src/typeUtils.d.ts.map +1 -0
- package/data/packages/spec/dist/src/typeUtils.js +1 -0
- package/data/packages/{wasp-config → spec}/package-lock.json +921 -1475
- package/data/packages/spec/package.json +48 -0
- package/data/packages/studio/package-lock.json +2 -2
- package/data/packages/studio/package.json +1 -1
- package/data/packages/ts-inspect/package-lock.json +2 -2
- package/data/packages/ts-inspect/package.json +1 -1
- package/package.json +1 -1
- package/wasp-bin +0 -0
- package/data/Cli/starters/basic/.prettierrc +0 -3
- package/data/Cli/starters/basic/main.wasp +0 -100
- package/data/Cli/starters/minimal/main.wasp +0 -14
- package/data/Cli/starters/ts-minimal/main.wasp.ts +0 -15
- package/data/Cli/starters/ts-minimal/package.json +0 -18
- package/data/Cli/starters/ts-minimal/schema.prisma +0 -10
- package/data/Cli/starters/ts-minimal/src/Main.css +0 -103
- package/data/Cli/starters/ts-minimal/src/MainPage.tsx +0 -37
- package/data/Cli/starters/ts-minimal/src/assets/logo.svg +0 -1
- package/data/Cli/starters/ts-minimal/tsconfig.json +0 -7
- package/data/Cli/starters/ts-minimal/vite.config.ts +0 -9
- package/data/packages/wasp-config/dist/__tests__/appAnalyzer.unit.test.d.ts.map +0 -1
- package/data/packages/wasp-config/dist/__tests__/cli.unit.test.js +0 -65
- package/data/packages/wasp-config/dist/__tests__/mapTsAppSpecToAppSpecDecls.integration.test.d.ts.map +0 -1
- package/data/packages/wasp-config/dist/__tests__/mapTsAppSpecToAppSpecDecls.unit.test.d.ts.map +0 -1
- package/data/packages/wasp-config/dist/__tests__/testFixtures.d.ts.map +0 -1
- package/data/packages/wasp-config/dist/__tests__/testFixtures.test-d.d.ts.map +0 -1
- package/data/packages/wasp-config/dist/src/_private.d.ts.map +0 -1
- package/data/packages/wasp-config/dist/src/appAnalyzer.d.ts.map +0 -1
- package/data/packages/wasp-config/dist/src/appSpec.d.ts.map +0 -1
- package/data/packages/wasp-config/dist/src/cli.d.ts.map +0 -1
- package/data/packages/wasp-config/dist/src/cli.js +0 -24
- package/data/packages/wasp-config/dist/src/index.d.ts +0 -8
- package/data/packages/wasp-config/dist/src/index.d.ts.map +0 -1
- package/data/packages/wasp-config/dist/src/index.js +0 -1
- package/data/packages/wasp-config/dist/src/mapTsAppSpecToAppSpecDecls.d.ts.map +0 -1
- package/data/packages/wasp-config/dist/src/publicApi/App.d.ts.map +0 -1
- package/data/packages/wasp-config/dist/src/publicApi/tsAppSpec.d.ts.map +0 -1
- package/data/packages/wasp-config/dist/src/run.js +0 -18
- package/data/packages/wasp-config/package.json +0 -40
- /package/data/packages/{wasp-config → spec}/dist/__tests__/cli.unit.test.d.ts +0 -0
- /package/data/packages/{wasp-config → spec}/dist/__tests__/cli.unit.test.d.ts.map +0 -0
- /package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/appAnalyzer.unit.test.d.ts +0 -0
- /package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/mapTsAppSpecToAppSpecDecls.integration.test.d.ts +0 -0
- /package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/mapTsAppSpecToAppSpecDecls.unit.test.d.ts +0 -0
- /package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/testFixtures.test-d.d.ts +0 -0
- /package/data/packages/{wasp-config/dist/__tests__ → spec/dist/__tests__/legacy}/testFixtures.test-d.js +0 -0
- /package/data/packages/{wasp-config → spec}/dist/src/appSpec.js +0 -0
- /package/data/packages/{wasp-config → spec}/dist/src/branded.d.ts +0 -0
- /package/data/packages/{wasp-config → spec}/dist/src/branded.d.ts.map +0 -0
- /package/data/packages/{wasp-config → spec}/dist/src/branded.js +0 -0
- /package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/_private.d.ts +0 -0
- /package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/_private.js +0 -0
- /package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/appAnalyzer.js +0 -0
- /package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/publicApi/App.d.ts +0 -0
- /package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/publicApi/App.js +0 -0
- /package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/publicApi/tsAppSpec.js +0 -0
- /package/data/packages/{wasp-config → spec}/dist/src/run.d.ts +0 -0
- /package/data/packages/{wasp-config → spec}/dist/src/run.d.ts.map +0 -0
package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/mapTsAppSpecToAppSpecDecls.d.ts
RENAMED
|
@@ -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 "
|
|
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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"}
|
package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/mapTsAppSpecToAppSpecDecls.js
RENAMED
|
@@ -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,
|
|
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"}
|
package/data/packages/{wasp-config/dist/src → spec/dist/src/legacy}/publicApi/tsAppSpec.d.ts
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as AppSpec from "
|
|
2
|
-
import { Branded } from "
|
|
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":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAIpD,wBAAgB,MAAM,CACpB,GAAG,EAAE,QAAQ,CAAC,GAAG,EACjB,EACE,cAAc,EACd,WAAW,GACZ,EAAE;IACD,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,GACA,OAAO,CAAC,IAAI,EAAE,CAqIhB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,cAAc,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,YAAY,EAAE,eAAe,CAAC;CAC/B,CAAC;AAEF,KAAK,eAAe,GAAG,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC;AAEjE,wBAAgB,OAAO,CACrB,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,IAAI,CAMd;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAW7D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,GACtC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAgBlC;AAaD,wBAAgB,QAAQ,CACtB,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,KAAK,CAOf;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,QAAQ,CAAC,MAAM,EACvB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,MAAM,CAOhB;AAED,wBAAgB,OAAO,CACrB,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,IAAI,CA2Bd;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,QAAQ,CAAC,WAAW,EAC7B,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,WAAW,CAsBrB;AAED,wBAAgB,sBAAsB,CACpC,mBAAmB,EAAE,QAAQ,CAAC,yBAAyB,EACvD,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,yBAAyB,CAKnC;AAED,wBAAgB,aAAa,CAC3B,UAAU,EAAE,QAAQ,CAAC,gBAAgB,EACrC,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,kBAAkB,CAM5B;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,QAAQ,CAAC,eAAe,EACnC,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,eAAe,CASzB;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,QAAQ,CAAC,eAAe,EACnC,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,uBAAuB,CAMjC;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAU5E;AAED,wBAAgB,eAAe,CAC7B,YAAY,EAAE,QAAQ,CAAC,YAAY,EACnC,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,YAAY,CAMtB;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,QAAQ,CAAC,MAAM,EACvB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,MAAM,CAShB;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,QAAQ,CAAC,MAAM,EACvB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,MAAM,CAShB;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,EAAE,CAMxE;AAED,wBAAgB,cAAc,CAC5B,WAAW,EAAE,QAAQ,CAAC,WAAW,GAChC,OAAO,CAAC,WAAW,CAMrB;AAED,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,QAAQ,CAAC,cAAc,GACtC,OAAO,CAAC,cAAc,CAKxB;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,QAAQ,CAAC,SAAS,EAC7B,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,SAAS,CAMnB;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAW5E;AAED,wBAAgB,OAAO,CACrB,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,IAAI,CAMd;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,QAAQ,CAAC,cAAc,EACnC,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,cAAc,CASxB;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,QAAQ,CAAC,oBAAoB,EACtC,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAAC,oBAAoB,CAM9B;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAOzE;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,QAAQ,IAAI,CAClD,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEpB,wBAAgB,aAAa,CAAC,CAAC,SAAS,OAAO,CAAC,QAAQ,EACtD,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,MAAM,EAAE,GAClB,SAAS,CAAC,CAAC,CAAC,CAad"}
|
|
@@ -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
|
+
}
|