Skip to content

Commit

Permalink
feat: add pRPC & remove tRPC
Browse files Browse the repository at this point in the history
  • Loading branch information
OrJDev committed Mar 22, 2024
1 parent 4781be3 commit 40ec503
Show file tree
Hide file tree
Showing 29 changed files with 145 additions and 287 deletions.
5 changes: 5 additions & 0 deletions .changeset/chilled-pillows-wait.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"create-jd-app": major
---

feat: add pRPC & remove tRPC
1 change: 0 additions & 1 deletion README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ npm create jd-app@latest
All addons are optional, you may select some, you may select all and you may select none.

- [Prisma](https://github.com/prisma/prisma)
- [tRPC](https://github.com/solidjs-community/mediakit/tree/main/packages/trpc)
- [pRPC](https://github.com/orjdev/prpc)
- [TailwindCSS](https://github.com/tailwindlabs/tailwindcss)
- [AuthJS](https://github.com/solidjs-community/mediakit/tree/main/packages/auth)
15 changes: 11 additions & 4 deletions src/helpers/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,22 @@ import type { ICtx, IUtil } from "~types";

export const getAppConfig: IUtil = (ctx) => {
const usePrisma = ctx.installers.includes("Prisma");
return `import { defineConfig } from "@solidjs/start/config";
const usePRPC = ctx.installers.includes("pRPC");
return `import { defineConfig } from "@solidjs/start/config";${
usePRPC ? `\nimport { prpcVite } from "@solid-mediakit/prpc-plugin";` : ""
}
export default defineConfig({
ssr: true,${
usePrisma
usePrisma || usePRPC
? `\n vite: {
ssr: {
${
usePrisma
? `ssr: {
external: ["@prisma/client"],
},
},`
: ""
}${usePRPC ? `\n plugins: [prpcVite()],` : ""}
},`
: ""
}${
Expand Down
11 changes: 0 additions & 11 deletions src/helpers/installer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,17 +110,6 @@ export async function getCtxWithInstallers(
let optInstallers = installers.filter(
(pkg) => !validInstallers.includes(pkg)
);
// const opts: Array<Array<TInstallers>> = [["tRPC", "pRPC"]];
// for (const opt of opts) {
// for (const op of opt) {
// if (validInstallers.includes(op)) {
// optInstallers = optInstallers.filter(
// // eslint-disable-next-line @typescript-eslint/no-explicit-any
// (pkg) => !opt.includes(pkg as any)
// );
// }
// }
// }
const newPkgs = (
await inquirer.prompt<{ pkgs: TInstallers[] }>({
name: "pkgs",
Expand Down
9 changes: 4 additions & 5 deletions src/helpers/packages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,10 @@ const packages = {
normal: {
// prisma
"@prisma/client": "^5.10.2",
// trpc
"@tanstack/solid-query": "^5.28.5",
"@trpc/client": "^10.45.1",
"@trpc/server": "^10.45.1",
"@solid-mediakit/trpc": "^3.0.1",
// prpc
"@tanstack/solid-query": "^5.28.6",
"@solid-mediakit/prpc": "^1.0.4",
"@solid-mediakit/prpc-plugin": "^1.0.2",
// next auth
"@solid-mediakit/auth": "^2.0.7",
"@auth/core": "^0.28.0",
Expand Down
8 changes: 4 additions & 4 deletions src/helpers/utils/getAppLocation.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import type { IUtil } from "~types";

const getAppLocation: IUtil = (ctx) => {
const usingTRPC = ctx.installers.includes("tRPC");
const usingPRPC = ctx.installers.includes("pRPC");
const usingAuth = ctx.installers.includes("AuthJS");

if (usingTRPC && usingAuth)
return `${ctx.templateDir}/app/with-auth-trpc.tsx`;
else if (usingTRPC) return `${ctx.templateDir}/app/with-trpc.tsx`;
if (usingPRPC && usingAuth)
return `${ctx.templateDir}/app/with-auth-prpc.tsx`;
else if (usingPRPC) return `${ctx.templateDir}/app/with-prpc.tsx`;
return ``;
};

Expand Down
25 changes: 9 additions & 16 deletions src/helpers/utils/getIndexLocation.ts
Original file line number Diff line number Diff line change
@@ -1,40 +1,33 @@
import type { ICtx, IUtil } from "~types";

const getIndexLocation: IUtil = (ctx) => {
const usingTRPC = ctx.installers.includes("tRPC");
const usingPRPC = ctx.installers.includes("pRPC");
const usingTw = ctx.installers.includes("TailwindCSS");
const usingAuth = ctx.installers.includes("AuthJS");
return createFileHelper(
usingTRPC,
usingTw,
usingAuth,
usingTRPC ? "tRPC" : null,
ctx
);
return createFileHelper(usingPRPC, usingTw, usingAuth, ctx);
};

export default getIndexLocation;

function createFileHelper(
usingRPC: boolean,
usingPRPC: boolean,
usingTw: boolean,
usingAuth: boolean,
rpc: null | "tRPC",
ctx: ICtx
) {
const fileName = rpc ? `${rpc.toLowerCase()}` : "";
const fileName = usingPRPC ? `prpc` : "";
let indexFile = "";
if (usingRPC && usingTw && usingAuth) {
if (usingPRPC && usingTw && usingAuth) {
indexFile = `with-auth-${fileName}-tw.tsx`;
} else if (usingRPC && !usingTw && usingAuth) {
} else if (usingPRPC && !usingTw && usingAuth) {
indexFile = `with-auth-${fileName}.tsx`;
} else if (usingRPC && usingTw) {
} else if (usingPRPC && usingTw) {
indexFile = `with-${fileName}-tw.tsx`;
} else if (usingRPC && !usingTw) {
} else if (usingPRPC && !usingTw) {
indexFile = `with-${fileName}.tsx`;
} else if (usingAuth && usingTw) {
indexFile = "with-auth-tw.tsx";
} else if (!usingRPC && usingTw) {
} else if (!usingPRPC && usingTw) {
indexFile = "with-tw.tsx";
} else if (usingAuth) {
indexFile = "with-auth.tsx";
Expand Down
2 changes: 1 addition & 1 deletion src/installers/AuthJS/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const config: IInstaller = (ctx) => {
path: `${__dirname}/files/handler.txt`,
to: `${ctx.userDir}/src/routes/api/auth/[...solidauth].ts`,
},
!ctx.installers.includes("tRPC")
!ctx.installers.includes("pRPC")
? {
path: `${__dirname}/files/app.txt`,
to: `${ctx.userDir}/src/app.tsx`,
Expand Down
13 changes: 13 additions & 0 deletions src/installers/pRPC/files/authMw.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { getSession } from "@solid-mediakit/auth";
import { error$, middleware$ } from "@solid-mediakit/prpc";
import { authOptions } from "./auth";

export const protectedAction = middleware$(async ({ event$ }) => {
const session = await getSession(event$.request, authOptions);
if (!session) {
return error$("Unauthorized", {
status: 401,
});
}
return session;
});
30 changes: 30 additions & 0 deletions src/installers/pRPC/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import { withPackages } from "~helpers/packages";
import type { IInstaller } from "~types";

const config: IInstaller = (ctx) => {
const useAuth = ctx.installers.includes("AuthJS");
return {
pkgs: withPackages({
normal: [
"@solid-mediakit/prpc",
"@solid-mediakit/prpc-plugin",
"@tanstack/solid-query",
],
}),
files: [
{
path: `${__dirname}/utils/getQueries`,
to: `${ctx.userDir}/src/server/queries.ts`,
type: "exec",
},
useAuth
? {
path: `${__dirname}/files/authMw.txt`,
to: `${ctx.userDir}/src/server/middleware.ts`,
}
: undefined,
],
};
};

export default config;
34 changes: 34 additions & 0 deletions src/installers/pRPC/utils/getQueries.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import type { IUtil } from "~types";

const getQueries: IUtil = (ctx) => {
const useAuth = ctx.installers.includes("AuthJS");
return `import { query$ } from '@solid-mediakit/prpc'
import { z } from 'zod'${
useAuth ? "\nimport { protectedAction } from './middleware'" : ""
}
export const testQuery = query$({
queryFn: async ({ payload }) => {
return \`hey \${payload.hello}\`
},
key: 'hello',
schema: z.object({
hello: z.string(),
}),
})${
useAuth
? `\nexport const protectedQuery = query$({
queryFn: async ({ payload }) => {
return \`this is top secret: \${payload.hello}\`;
},
key: "hello",
schema: z.object({
hello: z.string(),
}),
middleware: [protectedAction],
});`
: ""
}
`;
};
export default getQueries;
24 changes: 0 additions & 24 deletions src/installers/tRPC/files/ssr-utils.txt

This file was deleted.

45 changes: 0 additions & 45 deletions src/installers/tRPC/index.ts

This file was deleted.

29 changes: 0 additions & 29 deletions src/installers/tRPC/utils/getMainRouter.ts

This file was deleted.

37 changes: 0 additions & 37 deletions src/installers/tRPC/utils/getTrpcContext.ts

This file was deleted.

Loading

0 comments on commit 40ec503

Please sign in to comment.