Skip to main content

@idhub/identity-adapter-angular/server

Interfaces

IdentityExpressMiddlewareConfig

Defined in: identity-adapter-angular/src/server/express-middleware.ts:31

Properties

optional cookie?: AnonymousIdCookieConfig

Defined in: identity-adapter-angular/src/server/express-middleware.ts:32


IdentityRequestLike

Defined in: identity-adapter-angular/src/server/express-middleware.ts:20

Minimal structural shapes for the bits of Express's req/res this middleware touches.

Why structural types instead of @types/express: this package must not add a dependency (even a dev one) that leaks Express into consumers' type graphs, and the middleware only ever reads one request header and appends one response header. Express's real Request/Response satisfy these shapes structurally, so app.use(identityExpressMiddleware()) type-checks with no cast in an Express app.

Properties

anonymousId?

optional anonymousId?: AnonymousId

Defined in: identity-adapter-angular/src/server/express-middleware.ts:23

Set by this middleware so downstream handlers / SSR can read the id.

headers

headers: object

Defined in: identity-adapter-angular/src/server/express-middleware.ts:21

optional cookie?: string


IdentityResponseLike

Defined in: identity-adapter-angular/src/server/express-middleware.ts:26

Methods

getHeader()

getHeader(name): string | number | string[] | undefined

Defined in: identity-adapter-angular/src/server/express-middleware.ts:27

Parameters
name

string

Returns

string | number | string[] | undefined

setHeader()

setHeader(name, value): unknown

Defined in: identity-adapter-angular/src/server/express-middleware.ts:28

Parameters
name

string

value

string | number | readonly string[]

Returns

unknown

Functions

identityExpressMiddleware()

identityExpressMiddleware(config?): (req, res, next) => void

Defined in: identity-adapter-angular/src/server/express-middleware.ts:57

Companion middleware for Angular Universal / SSR.

Angular has no request-time middleware of its own, so the APP_INITIALIZER guarantee only covers the browser bootstrap. Mounting this in the Express server that hosts the Universal build gives the same guarantee server-side: the canonical anonymous id exists on the very first request, before any component renders, so the server render and the subsequent client bootstrap agree on one id instead of the client minting a second one.

Implementation note: it uses identity-core's lower-level cookie primitives (parseCookieHeader / serializeAnonymousIdCookie) rather than getOrCreateAnonymousIdFromRequest, because the latter takes a Web Standard Request and Express exposes a Node IncomingMessage. Wrapping every request in a synthetic Request just to read one header would allocate on every hit and still need unwrapping to append the Set-Cookie; the cookie semantics (name/defaults/serialization) still come from identity-core, so there is no duplicated cookie logic — only a different transport.

Set-Cookie is appended, never replaced, so it composes with session or auth cookies set by other middleware.

Parameters

config?

IdentityExpressMiddlewareConfig = {}

Returns

(req, res, next) => void