@emmert/context
TypeScript icon, indicating that this package has built-in type declarations

0.22.0 • Public • Published

Create Context

Tools for composing application context with middleware.

Architecture

Create apps by concatinating middleware.

Installation

NPM
npm install @emmert/context

Yarn
yarn add @emmert/context

Configuration & Setup

Create an express application

export async function createAppContext() {
    const context = new AppContext()

    const app = express()
    const dbConfig = await getDbConfig()

    await context.use(
        expressMiddleware(app),
        resourcesMiddleware({
            defaultLanguage: 'en',
            resources: async () => {
                const resourcesDir = path.join('src', 'resources')
                const resources = await loadResourcesFromDirectory(resourcesDir)
                return resources
            },
        }),
        typeOrmMiddleware(dbConfig.default),
        graphQLMiddleware((appContext: AppContext) => ({
            schema: buildFederatedSchema([
                {
                    typeDefs,
                    resolvers: resolvers(appContext),
                },
            ]),
            context: async (express): Promise<RequestContext> => {
                const context = new RequestContext()
                await context.use(
                    appContext.asMiddleware,
                    expressContextMiddleware(express.req),
                    resourcesMiddlewareForLocale(
                        express.req.headers['language'] as string,
                    ),
                    authClient.middleware,
                )

                return context
            },
        })),
    )

Readme

Keywords

none

Package Sidebar

Install

npm i @emmert/context

Weekly Downloads

2

Version

0.22.0

License

MIT

Unpacked Size

92.7 kB

Total Files

37

Last publish

Collaborators

  • paco3346
  • robbyemmert