Froge
Froge
Explore posts from servers
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
Appreciate it @nlucas !
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
Wow, okay... so two packages had different version of @trpc/next and @trpc/server Must've happened when splitting out, I've done some more consolidating, brining the next client into the api package, wowweee Edit: And strict mode, obviously... shit breaks without it (but we know this, this is just for the others experiencing weirdness, if it's weird it's usually versions or strict mode)
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
Hol' up - might have some version mismatching going on
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
It's fairly minimal anyways, if I take it back any further I'll be stripping out the monorepo
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
I'm based in AUS so it'll likely be tomorrow. I can share you the repo that it is now, if you shoot through your GH
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
You saw my antics before of chasing down tsconfig issues, so it could be, but I'm doubtful
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
Thank you! Much appreciated! If you want the source code, I'm happy to share the repo with you
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
I'll go through and even do it on a package level tsconfig, not just the base
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
Everything has strict enabled
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
It's super weird... Is it a typescript or linting issue? As that's all I've been playing around with
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
import { prisma } from "@app/db";

import { type CreateNextContextOptions } from "@trpc/server/adapters/next";
import { type Session } from "next-auth";

import { getServerAuthSession } from "@app/auth";

export type CreateContextOptions = {
session: Session | null;
};

const createInnerTRPCContext = (opts: CreateContextOptions) => {
return {
session: opts.session,
prisma,
};
};

export const createTRPCContext = async (opts: CreateNextContextOptions) => {
const { req, res } = opts;

// Get the session from the server using the getServerSession wrapper function
const session = await getServerAuthSession({ req, res });

return {
...createInnerTRPCContext({
session,
}),
req,
res,
};
};

import { initTRPC, TRPCError } from "@trpc/server";
import superjson from "superjson";
import { ZodError } from "zod";

const t = initTRPC.context<typeof createTRPCContext>().create({
transformer: superjson,
errorFormatter({ shape, error }) {
return {
...shape,
data: {
...shape.data,
zodError:
error.cause instanceof ZodError
? error.cause.flatten()
: null,
},
};
},
});

export const createTRPCRouter = t.router;

export const publicProcedure = t.procedure;

/** Reusable middleware that enforces users are logged in before running the procedure. */
const enforceUserIsAuthed = t.middleware(({ ctx, next }) => {
if (!ctx.session || !ctx.session.user) {
throw new TRPCError({ code: "UNAUTHORIZED" });
}
return next({
ctx: {
// infers the `session` as non-nullable
session: { ...ctx.session, user: ctx.session.user },
},
});
});


export const protectedProcedure = t.procedure.use(enforceUserIsAuthed);

const enfroceUserIsAdmin = t.middleware(({ ctx, next }) => {
if (!ctx.session?.user.isAdmin) {
throw new TRPCError({ code: "UNAUTHORIZED" });
}
return next({
ctx: {
// infers the `session` as non-nullable
session: { ...ctx.session, user: ctx.session.user },
},
});
});

export const adminProcedure = t.procedure.use(enfroceUserIsAdmin);
import { prisma } from "@app/db";

import { type CreateNextContextOptions } from "@trpc/server/adapters/next";
import { type Session } from "next-auth";

import { getServerAuthSession } from "@app/auth";

export type CreateContextOptions = {
session: Session | null;
};

const createInnerTRPCContext = (opts: CreateContextOptions) => {
return {
session: opts.session,
prisma,
};
};

export const createTRPCContext = async (opts: CreateNextContextOptions) => {
const { req, res } = opts;

// Get the session from the server using the getServerSession wrapper function
const session = await getServerAuthSession({ req, res });

return {
...createInnerTRPCContext({
session,
}),
req,
res,
};
};

import { initTRPC, TRPCError } from "@trpc/server";
import superjson from "superjson";
import { ZodError } from "zod";

const t = initTRPC.context<typeof createTRPCContext>().create({
transformer: superjson,
errorFormatter({ shape, error }) {
return {
...shape,
data: {
...shape.data,
zodError:
error.cause instanceof ZodError
? error.cause.flatten()
: null,
},
};
},
});

export const createTRPCRouter = t.router;

export const publicProcedure = t.procedure;

/** Reusable middleware that enforces users are logged in before running the procedure. */
const enforceUserIsAuthed = t.middleware(({ ctx, next }) => {
if (!ctx.session || !ctx.session.user) {
throw new TRPCError({ code: "UNAUTHORIZED" });
}
return next({
ctx: {
// infers the `session` as non-nullable
session: { ...ctx.session, user: ctx.session.user },
},
});
});


export const protectedProcedure = t.procedure.use(enforceUserIsAuthed);

const enfroceUserIsAdmin = t.middleware(({ ctx, next }) => {
if (!ctx.session?.user.isAdmin) {
throw new TRPCError({ code: "UNAUTHORIZED" });
}
return next({
ctx: {
// infers the `session` as non-nullable
session: { ...ctx.session, user: ctx.session.user },
},
});
});

export const adminProcedure = t.procedure.use(enfroceUserIsAdmin);
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
I'll remove comments
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
Sec
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
I think I've only added the admin middleware
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
Is pretty out of the box
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
I'm happy to share the repo
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
So I've just changed it to this, removing my procedures and sub-routes. Same errors.
import { createTRPCRouter } from "./trpc";

import { z } from "zod";

import { protectedProcedure, publicProcedure } from "./trpc";

export const exampleRouter = createTRPCRouter({
hello: publicProcedure
.input(z.object({ text: z.string() }))
.query(({ input }) => {
return {
greeting: `Hello ${input.text}`,
};
}),
getSecretMessage: protectedProcedure.query(() => {
return "you can now see this secret message!";
}),
});

/**
* This is the primary router for your server.
*
* All routers added in /api/routers should be manually added here.
*/
export const appRouter = createTRPCRouter({
exampleRouter,
});

// export type definition of API
export type AppRouter = typeof appRouter;
import { createTRPCRouter } from "./trpc";

import { z } from "zod";

import { protectedProcedure, publicProcedure } from "./trpc";

export const exampleRouter = createTRPCRouter({
hello: publicProcedure
.input(z.object({ text: z.string() }))
.query(({ input }) => {
return {
greeting: `Hello ${input.text}`,
};
}),
getSecretMessage: protectedProcedure.query(() => {
return "you can now see this secret message!";
}),
});

/**
* This is the primary router for your server.
*
* All routers added in /api/routers should be manually added here.
*/
export const appRouter = createTRPCRouter({
exampleRouter,
});

// export type definition of API
export type AppRouter = typeof appRouter;
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
That's the app router. Let me comment out the sub routes and see what happens.
import { company } from "./routers/company";
import { job } from "./routers/job";
import { profile } from "./routers/profile";
import { createTRPCRouter } from "./trpc";

/**
* This is the primary router for your server.
*
* All routers added in /api/routers should be manually added here.
*/
export const appRouter = createTRPCRouter({
profile,
job,
company,
});

// export type definition of API
export type AppRouter = typeof appRouter;
import { company } from "./routers/company";
import { job } from "./routers/job";
import { profile } from "./routers/profile";
import { createTRPCRouter } from "./trpc";

/**
* This is the primary router for your server.
*
* All routers added in /api/routers should be manually added here.
*/
export const appRouter = createTRPCRouter({
profile,
job,
company,
});

// export type definition of API
export type AppRouter = typeof appRouter;
49 replies
TtRPC
Created by Froge on 4/23/2023 in #❓-help
'useInfiniteQuery' hook disappeared after moving to Turborepo
100%
49 replies