Skip to content

feat: add H3EventContext for augmentation#124

Merged
pi0 merged 3 commits intomainfrom
feat/event-context
Jun 1, 2022
Merged

feat: add H3EventContext for augmentation#124
pi0 merged 3 commits intomainfrom
feat/event-context

Conversation

@danielroe
Copy link
Copy Markdown
Member

Simply exposes an EventContext interface for manual typing:

declare module 'h3' {
  interface EventContext {
    myProperty?: boolean
  }
}
export {}

resolves #122

@danielroe danielroe requested a review from pi0 May 25, 2022 12:04
@danielroe danielroe self-assigned this May 25, 2022
Comment thread src/event.ts Outdated
Comment thread src/event.ts Outdated
@pi0
Copy link
Copy Markdown
Member

pi0 commented Jun 1, 2022

(I'm not sure but kinda feeling using H3EventContext would be less confusing in the future about naming interface with H3 prefix. Currently some exports are prefixed and some not)

@pi0 pi0 changed the title feat: add EventContext for augmentation feat: add H3EventContext for augmentation Jun 1, 2022
@pi0 pi0 merged commit 5042e92 into main Jun 1, 2022
@pi0 pi0 deleted the feat/event-context branch June 1, 2022 06:50
@wobsoriano
Copy link
Copy Markdown
Contributor

wobsoriano commented Jun 9, 2022

Can we also add augmentation for the request object? This is for using connect/express middlewares.

An example with express-session:

// ~/server/middleware/session.ts
import session from 'express-session'
import type { Session } from 'express-session'

export default session(options)

declare module 'h3' {
  interface EventRequest {
    session: Session
    sessionId: string
  }
}
// ~/server/api/user.ts
export default defineEventHandler((event) => {
  event.req.session // typed properly!
})

Current workaround:

declare module 'h3' {
  interface CompatibilityEvent {
    event: CompatibilityEvent
    req: IncomingMessage & {
      session: Session
      sessionId: string
    }
    res: ServerResponse
    context: Record<string, any>
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow typing event context

3 participants