From 58313c59a21e32ae1410c1a7d88d534eece9b2af Mon Sep 17 00:00:00 2001 From: unnoq Date: Wed, 20 Nov 2024 19:33:22 +0700 Subject: [PATCH] docs: update global os var names --- apps/content/content/docs/contract-first.mdx | 11 +++++---- .../content/content/docs/contract/builder.mdx | 12 ++++++---- apps/content/content/docs/index.mdx | 11 +++++---- .../content/docs/openapi/generator.mdx | 13 +++++----- .../content/docs/server/middleware.mdx | 13 +++++----- .../content/content/docs/server/procedure.mdx | 4 ++-- apps/content/examples/contract.ts | 18 +++++++++----- apps/content/examples/middleware.ts | 24 ++++++++++--------- apps/content/examples/server.ts | 15 +++++++----- 9 files changed, 68 insertions(+), 53 deletions(-) diff --git a/apps/content/content/docs/contract-first.mdx b/apps/content/content/docs/contract-first.mdx index a791c50c..a81de436 100644 --- a/apps/content/content/docs/contract-first.mdx +++ b/apps/content/content/docs/contract-first.mdx @@ -86,17 +86,18 @@ With your contract defined, implement the server logic: import { os, ORPCError } from '@orpc/server' import { contract } from 'examples/contract' -export const osw /** os with ... */ = os.contract(contract) // Ensure every implement must be match contract +export const pub /** public access */ = os.contract(contract) // Ensure every implement must be match contract +export const authed /** require authed */ = os.use(() => {/* auth logic */}).contract(contract) -export const router = osw.router({ - getting: osw.getting.handler((input, context, meta) => { +export const router = pub.router({ + getting: pub.getting.handler((input, context, meta) => { return { message: `Hello, ${input.name}!`, } }), post: { - find: osw.post.find + find: pub.post.find .handler((input, context, meta) => { return { id: 'example', @@ -105,7 +106,7 @@ export const router = osw.router({ } }), - create: osw.post.create.handler((input, context, meta) => { + create: authed.post.create.handler((input, context, meta) => { return { id: 'example', title: input.title, diff --git a/apps/content/content/docs/contract/builder.mdx b/apps/content/content/docs/contract/builder.mdx index eaf8628c..339a117e 100644 --- a/apps/content/content/docs/contract/builder.mdx +++ b/apps/content/content/docs/contract/builder.mdx @@ -81,17 +81,19 @@ import { os } from '@orpc/server' import { contract } from 'examples/contract' export type Context = { user?: { id: string } } -export const osw /** os with ... */ = os.context().contract(contract) // Ensure every implement must be match contract +export const base = os.context() +export const pub /** public access */ = base.contract(contract) // Ensure every implement must be match contract +export const authed /** require authed */ = base.use(() => {/* auth logic */}).contract(contract) -export const router = osw.router({ - getting: osw.getting.handler((input, context, meta) => { +export const router = pub.router({ + getting: pub.getting.handler((input, context, meta) => { return { message: `Hello, ${input.name}!`, } }), post: { - find: osw.post.find + find: pub.post.find .handler((input, context, meta) => { return { id: 'example', @@ -100,7 +102,7 @@ export const router = osw.router({ } }), - create: osw.post.create.handler((input, context, meta) => { + create: authed.post.create.handler((input, context, meta) => { return { id: 'example', title: input.title, diff --git a/apps/content/content/docs/index.mdx b/apps/content/content/docs/index.mdx index ca6e84fa..7cf443e1 100644 --- a/apps/content/content/docs/index.mdx +++ b/apps/content/content/docs/index.mdx @@ -57,10 +57,11 @@ import { z } from 'zod' export type Context = { user?: { id: string } } -// global osw completely optional, needed when you want to use context -export const osw /** os with ... */ = os.context() +// global pub, authed completely optional +export const pub /** public access */ = os.context() +export const authed /** require authed */ = pub.use(() => {/* auth logic */}) -export const router = osw.router({ +export const router = pub.router({ getting: os .input( z.object({ @@ -74,7 +75,7 @@ export const router = osw.router({ }), post: { - find: osw + find: pub .input( z.object({ id: z.string({}), @@ -112,7 +113,7 @@ export const router = osw.router({ } }), - create: osw + create: authed .input( z.object({ title: z.string(), diff --git a/apps/content/content/docs/openapi/generator.mdx b/apps/content/content/docs/openapi/generator.mdx index 341d15a5..e597b364 100644 --- a/apps/content/content/docs/openapi/generator.mdx +++ b/apps/content/content/docs/openapi/generator.mdx @@ -18,10 +18,11 @@ import { z } from 'zod' export type Context = { user?: { id: string } } -// global osw completely optional, needed when you want to use context -export const osw /** os with ... */ = os.context() +// global pub, authed completely optional +export const pub /** public access */ = os.context() +export const authed /** require authed */ = pub.use(() => {/* auth logic */}) -export const router = osw.router({ +export const router = pub.router({ getting: os .input( z.object({ @@ -34,8 +35,8 @@ export const router = osw.router({ } }), - post: osw.prefix('/posts').router({ - find: osw + post: pub.prefix('/posts').router({ + find: pub .route({ path: '/{id}', // custom your OpenAPI method: 'GET', @@ -60,7 +61,7 @@ export const router = osw.router({ } }), - create: osw + create: authed .input( z.object({ title: z.string(), diff --git a/apps/content/content/docs/server/middleware.mdx b/apps/content/content/docs/server/middleware.mdx index 9bec6da4..e890b141 100644 --- a/apps/content/content/docs/server/middleware.mdx +++ b/apps/content/content/docs/server/middleware.mdx @@ -12,10 +12,9 @@ import { os, ORPCError } from '@orpc/server' export type Context = { user?: { id: string } } -// global osw completely optional, needed when you want to use context -export const osw /** os with ... */ = os.context() +export const pub /** public access */ = os.context() -const authMiddleware = osw.middleware(async (input, context, meta) => { +const authMiddleware = pub.middleware(async (input, context, meta) => { meta.onSuccess(async (output) => { // Invoked after successful handler execution // Other callbacks: onError, onFinish @@ -36,7 +35,7 @@ const authMiddleware = osw.middleware(async (input, context, meta) => { }) // Now every procedure or router defined in this oRPC will be protected by authMiddleware -const authOS = osw.use(authMiddleware) +export const authed /** require authed */ = pub.use(authMiddleware) ``` ## Typed Input @@ -87,10 +86,10 @@ type Context = { } } -const osw = os.context() +export const pub = os.context() // Any procedure using this middleware will infer context.user as NonNullable -const authMiddleware = osw +const authMiddleware = pub .middleware(async (input, context, meta) => { if (!context.user) { throw new ORPCError({ code: 'UNAUTHORIZED' }) @@ -103,7 +102,7 @@ const authMiddleware = osw } }) -const procedure = osw +export const authed = pub .use(authMiddleware) .use((input, context, meta) => { diff --git a/apps/content/content/docs/server/procedure.mdx b/apps/content/content/docs/server/procedure.mdx index 359ea26b..8ce15a25 100644 --- a/apps/content/content/docs/server/procedure.mdx +++ b/apps/content/content/docs/server/procedure.mdx @@ -20,9 +20,9 @@ import { z } from 'zod' import { os, ORPCError } from '@orpc/server' // Define context type for full type inference -const osw = os.context<{user?: {id: string}}>() +const pub /* public access */ = os.context<{user?: {id: string}}>() -const findUser = osw +const findUser = pub .route({ method: 'GET', path: '/{id}' }) // Optional: if you want custom api under OpenAPI Specifications .input(z.object({ id: z.string() })) // Optional .output(z.object({ id: z.string(), name: z.string() })) // Optional diff --git a/apps/content/examples/contract.ts b/apps/content/examples/contract.ts index 450278f0..9df1bedd 100644 --- a/apps/content/examples/contract.ts +++ b/apps/content/examples/contract.ts @@ -60,17 +60,23 @@ export const contract = oc.router({ import { os, ORPCError } from '@orpc/server' export type Context = { user?: { id: string } } -export const osw /** os with ... */ = os.context().contract(contract) // Ensure every implement must be match contract - -export const router = osw.router({ - getting: osw.getting.handler((input, context, meta) => { +export const base = os.context() +export const pub /** os with ... */ = base.contract(contract) // Ensure every implement must be match contract +export const authed /** require authed */ = base + .use(() => { + /* auth logic */ + }) + .contract(contract) + +export const router = pub.router({ + getting: pub.getting.handler((input, context, meta) => { return { message: `Hello, ${input.name}!`, } }), post: { - find: osw.post.find + find: pub.post.find .use((input, context, meta) => { if (!context.user) { throw new ORPCError({ @@ -96,7 +102,7 @@ export const router = osw.router({ } }), - create: osw.post.create.handler((input, context, meta) => { + create: authed.post.create.handler((input, context, meta) => { return { id: 'example', title: input.title, diff --git a/apps/content/examples/middleware.ts b/apps/content/examples/middleware.ts index c5705acb..00b1cb03 100644 --- a/apps/content/examples/middleware.ts +++ b/apps/content/examples/middleware.ts @@ -5,17 +5,19 @@ import { z } from 'zod' export type Context = { user?: { id: string } } -const osw = os.context().use((input, context, meta) => { - // This middleware will apply to everything create from osw - const start = Date.now() +export const pub /** public access */ = os + .context() + .use((input, context, meta) => { + // This middleware will apply to everything create from pub + const start = Date.now() - meta.onFinish((output, error) => { - // biome-ignore lint/suspicious/noConsole: - console.log(`middleware cost ${Date.now() - start}ms`) + meta.onFinish((output, error) => { + // biome-ignore lint/suspicious/noConsole: + console.log(`middleware cost ${Date.now() - start}ms`) + }) }) -}) -export const authMiddleware = osw.middleware(async (input, context, meta) => { +export const authMid = pub.middleware(async (input, context, meta) => { if (!context.user) { throw new ORPCError({ code: 'UNAUTHORIZED' }) } @@ -34,9 +36,9 @@ export const authMiddleware = osw.middleware(async (input, context, meta) => { } }) -export const authOS = osw.use(authMiddleware) // any procedure compose from authOS will be protected +export const authed = pub.use(authMid) // any procedure compose from authOS will be protected -export const canEditPost = authMiddleware.concat( +export const canEditPost = authMid.concat( // Now you expect to have id in input async (input: { id: string }, context, meta) => { if (context.user.id !== input.id) { @@ -45,7 +47,7 @@ export const canEditPost = authMiddleware.concat( }, ) -const editPost = authOS +export const editPost = authed .input(z.object({ id: z.string() })) .output(z.string()) .use(canEditPost) // if input not match, will throw type error diff --git a/apps/content/examples/server.ts b/apps/content/examples/server.ts index 5e49ef8a..b2b6126d 100644 --- a/apps/content/examples/server.ts +++ b/apps/content/examples/server.ts @@ -4,10 +4,13 @@ import { z } from 'zod' export type Context = { user?: { id: string } } -// global osw completely optional, needed when you want to use context -export const osw /** os with ... */ = os.context() +// global pub, authed completely optional +export const pub /** public access */ = os.context() +export const authed /** require authed */ = pub.use(() => { + /* auth logic */ +}) -export const router = osw.router({ +export const router = pub.router({ getting: os .input( z.object({ @@ -20,8 +23,8 @@ export const router = osw.router({ } }), - post: osw.prefix('/posts').router({ - find: osw + post: pub.prefix('/posts').router({ + find: pub .route({ path: '/{id}', // custom your OpenAPI method: 'GET', @@ -63,7 +66,7 @@ export const router = osw.router({ } }), - create: osw + create: authed .input( z.object({ title: z.string(),