Skip to main content

@idhub/identity-adapter-angular

Classes​

IdentityHttpInterceptor​

Defined in: identity-adapter-angular/src/http-interceptor.ts:24

Attaches the current identity id to every outgoing HttpClient request so a backend can correlate its own logs with the vendor-side identity.

The header carries the userId once identified and the anonymous id before that — one header, one meaning ("who is this request from"), matching how identity-core models the state machine.

Registered only when IdentityModule.forRoot({ enableHttpInterceptor: true }) is used; an existing header on the request is never overwritten.

Implements​

  • HttpInterceptor

Constructors​

Constructor​

new IdentityHttpInterceptor(identity): IdentityHttpInterceptor

Defined in: identity-adapter-angular/src/http-interceptor.ts:25

Parameters​
identity​

IdentityService

Returns​

IdentityHttpInterceptor

Methods​

intercept()​

intercept(request, next): Observable<HttpEvent<unknown>>

Defined in: identity-adapter-angular/src/http-interceptor.ts:27

Identifies and handles a given HTTP request.

Parameters​
request​

HttpRequest<unknown>

next​

HttpHandler

The next interceptor in the chain, or the backend if no interceptors remain in the chain.

Returns​

Observable<HttpEvent<unknown>>

An observable of the event stream.

Implementation of​

HttpInterceptor.intercept


IdentityModule​

Defined in: identity-adapter-angular/src/identity.module.ts:39

Providers-only Angular module. forRoot() is the single supported entry point; importing IdentityModule bare intentionally registers nothing so a lazily-loaded feature module can't accidentally create a second IdentityClient (which would mean two competing anonymous ids).

Constructors​

Constructor​

new IdentityModule(): IdentityModule

Returns​

IdentityModule

Methods​

forRoot()​

static forRoot(config): ModuleWithProviders<IdentityModule>

Defined in: identity-adapter-angular/src/identity.module.ts:40

Parameters​
config​

IdentityModuleConfig

Returns​

ModuleWithProviders<IdentityModule>


IdentityService​

Defined in: identity-adapter-angular/src/identity.service.ts:27

Angular-facing wrapper around identity-core's IdentityClient.

The client is created in the constructor, which is what makes the APP_INITIALIZER guarantee work: identity-core resolves the canonical anonymous id and fans onAnonymous out to every provider synchronously during createIdentityClient(), so by the time this constructor returns the id exists and every provider has been notified.

State is republished as an RxJS BehaviorSubject so templates can use state$ | async and get the current value immediately rather than waiting for the next transition.

Implements​

  • OnDestroy

Constructors​

Constructor​

new IdentityService(config): IdentityService

Defined in: identity-adapter-angular/src/identity.service.ts:39

@Inject is explicit rather than metadata-driven: this package is built with esbuild, which cannot emit design:paramtypes.

Parameters​
config​

IdentityModuleConfig

Returns​

IdentityService

Properties​

state$​

readonly state$: Observable<IdentityState>

Defined in: identity-adapter-angular/src/identity.service.ts:33

Current identity state, replayed to every new subscriber.

Accessors​

snapshot​
Get Signature​

get snapshot(): IdentityState

Defined in: identity-adapter-angular/src/identity.service.ts:59

Synchronous snapshot, for callers that cannot await an Observable — notably IdentityHttpInterceptor, which must decide on a header value inside intercept().

Returns​

IdentityState

Methods​

identify()​

identify(userId, traits?): void

Defined in: identity-adapter-angular/src/identity.service.ts:64

Fans out to every provider's onIdentify. Call once, at login.

Parameters​
userId​

string

traits?​

Traits

Returns​

void

ngOnDestroy()​

ngOnDestroy(): void

Defined in: identity-adapter-angular/src/identity.service.ts:83

A callback method that performs custom clean-up, invoked immediately before a directive, pipe, or service instance is destroyed.

Returns​

void

Implementation of​

OnDestroy.ngOnDestroy

page()​

page(name?, properties?): void

Defined in: identity-adapter-angular/src/identity.service.ts:79

Fans out to every provider that implements onPage.

Parameters​
name?​

string

properties?​

Traits

Returns​

void

reset()​

reset(): void

Defined in: identity-adapter-angular/src/identity.service.ts:69

Logout: issues a brand-new anonymous id and fans out onReset.

Returns​

void

track()​

track(event, properties?): void

Defined in: identity-adapter-angular/src/identity.service.ts:74

Fans out to every provider that implements onTrack.

Parameters​
event​

string

properties?​

Traits

Returns​

void

Interfaces​

AnonymousIdCookieConfig​

Defined in: identity-core/build/esm/index.d.ts:52

Properties​

domain?​

optional domain?: string

Defined in: identity-core/build/esm/index.d.ts:56

Cookie domain, e.g. '.example.com' for cross-subdomain sharing.

httpOnly?​

optional httpOnly?: boolean

Defined in: identity-core/build/esm/index.d.ts:60

Must stay readable by vendor client SDKs. Default: false.

maxAge?​

optional maxAge?: number

Defined in: identity-core/build/esm/index.d.ts:58

Seconds. Default: 31536000 (1 year).

name?​

optional name?: string

Defined in: identity-core/build/esm/index.d.ts:54

Cookie name. Default: '_anon_id'.

sameSite?​

optional sameSite?: "Strict" | "Lax" | "None"

Defined in: identity-core/build/esm/index.d.ts:62

Default: 'Lax'.

secure?​

optional secure?: boolean

Defined in: identity-core/build/esm/index.d.ts:64

Default: true in production, false in local dev over http.


IdentityModuleConfig​

Defined in: identity-adapter-angular/src/config.ts:14

Everything IdentityModule.forRoot() accepts. Deliberately a superset of identity-core's IdentityClientConfig — the adapter adds only Angular-level concerns (enableHttpInterceptor) and re-exposes the rest verbatim so there is exactly one shape to learn.

Properties​

optional cookie?: AnonymousIdCookieConfig

Defined in: identity-adapter-angular/src/config.ts:18

Cookie settings for the canonical anonymous id.

enableHttpInterceptor?​

optional enableHttpInterceptor?: boolean

Defined in: identity-adapter-angular/src/config.ts:24

Registers IdentityHttpInterceptor in HTTP_INTERCEPTORS so every HttpClient request carries the current identity id. Off by default — sending an id to a third-party API is a decision the app must opt into.

onWarning?​

optional onWarning?: (code, message) => void

Defined in: identity-adapter-angular/src/config.ts:26

Forwarded to identity-core's IdentityClientConfig.onWarning.

Parameters​
code​

IdentityWarningCode

message​

string

Returns​

void

providers​

providers: IdentityProvider[]

Defined in: identity-adapter-angular/src/config.ts:16

Vendor packages implementing identity-core's IdentityProvider.


IdentityProvider​

Defined in: identity-core/build/esm/index.d.ts:69

Every vendor package (identity-provider-segment, -launchdarkly, -fullstory, or a future 4th vendor) implements exactly this interface. identity-core never imports a concrete provider — only this shape.

Properties​

name​

readonly name: string

Defined in: identity-core/build/esm/index.d.ts:71

Unique name for logging/debugging, e.g. 'segment'.

Methods​

onAnonymous()​

onAnonymous(anonymousId): void | Promise<void>

Defined in: identity-core/build/esm/index.d.ts:75

Called once, as early as possible, before the user is known. Segment/LaunchDarkly use this; FullStory's implementation is a documented no-op (see provider table).

Parameters​
anonymousId​

AnonymousId

Returns​

void | Promise<void>

onIdentify()​

onIdentify(userId, anonymousId, traits?): void | Promise<void>

Defined in: identity-core/build/esm/index.d.ts:80

Called exactly once per login/registration. Implementations must be idempotent if called twice with the SAME userId (e.g. traits update), but IdentityClient guards against calls with a DIFFERENT userId while already identified (see IdentityClientConfig.onWarning).

Parameters​
userId​

string

anonymousId​

AnonymousId

traits?​

Traits

Returns​

void | Promise<void>

onPage()?​

optional onPage(name?, properties?): void | Promise<void>

Defined in: identity-core/build/esm/index.d.ts:89

Optional: page-view tracking, same rationale as onTrack.

Parameters​
name?​

string

properties?​

Traits

Returns​

void | Promise<void>

onReset()​

onReset(newAnonymousId): void | Promise<void>

Defined in: identity-core/build/esm/index.d.ts:83

Called on logout. Receives the newly generated anonymous id (the old one is intentionally not passed — providers must not persist it).

Parameters​
newAnonymousId​

AnonymousId

Returns​

void | Promise<void>

onTrack()?​

optional onTrack(event, properties?): void | Promise<void>

Defined in: identity-core/build/esm/index.d.ts:87

Optional: only implement if the vendor has an event-tracking API distinct from identify (Segment/FullStory track events; a future flag-only provider might omit this entirely).

Parameters​
event​

string

properties?​

Traits

Returns​

void | Promise<void>

Type Aliases​

AnonymousId​

AnonymousId = string & object

Defined in: identity-core/build/esm/index.d.ts:6

Canonical anonymous id. Branded so it can't be silently mixed up with a plain userId string at call sites.

Type Declaration​

__brand​

readonly __brand: "AnonymousId"


IdentityEvent​

IdentityEvent = { anonymousId: AnonymousId; type: "anonymous_id_created"; } | { anonymousId: AnonymousId; traits?: Traits; type: "identified"; userId: UserId; } | { anonymousId: AnonymousId; previousAnonymousId: AnonymousId; type: "reset"; } | { event: string; properties?: Traits; type: "track"; } | { name?: string; properties?: Traits; type: "page"; } | { code: IdentityWarningCode; message: string; type: "warning"; }

Defined in: identity-core/build/esm/index.d.ts:22

Emitted on every state transition; adapters subscribe to drive React context / Angular Observable updates.

Union Members​

Type Literal​

{ anonymousId: AnonymousId; type: "anonymous_id_created"; }


Type Literal​

{ anonymousId: AnonymousId; traits?: Traits; type: "identified"; userId: UserId; }


Type Literal​

{ anonymousId: AnonymousId; previousAnonymousId: AnonymousId; type: "reset"; }


Type Literal​

{ event: string; properties?: Traits; type: "track"; }


Type Literal​

{ name?: string; properties?: Traits; type: "page"; }


Type Literal​

{ code: IdentityWarningCode; message: string; type: "warning"; }

Dev-mode-only warning event, e.g. re-identify with a different userId while already identified (see Risks: FullStory split-not-merge). Never fired in production builds.


IdentityState​

IdentityState = { anonymousId: AnonymousId; status: "anonymous"; } | { anonymousId: AnonymousId; status: "identified"; traits?: Traits; userId: UserId; }

Defined in: identity-core/build/esm/index.d.ts:11


IdentityWarningCode​

IdentityWarningCode = "reidentify_with_different_user_id" | "provider_init_failed" | "track_before_ready"

Defined in: identity-core/build/esm/index.d.ts:51


Traits​

Traits = Record<string, string | number | boolean | null | undefined>

Defined in: identity-core/build/esm/index.d.ts:3

Free-form traits attached to a user or event. Vendor packages map this onto their own SDK's trait/property shape internally.


UserId​

UserId = string

Defined in: identity-core/build/esm/index.d.ts:10

Vendor-supplied known user id (e.g. memberId, sub claim).

Variables​

IDENTITY_CONFIG​

const IDENTITY_CONFIG: InjectionToken<IdentityModuleConfig>

Defined in: identity-adapter-angular/src/config.ts:34

DI token holding the resolved forRoot config. Exported so tests and advanced consumers can re-provide it; app code should use IdentityModule.forRoot().


IDENTITY_ID_HEADER​

const IDENTITY_ID_HEADER: "X-Identity-Id" = "X-Identity-Id"

Defined in: identity-adapter-angular/src/config.ts:39

Request header used by IdentityHttpInterceptor.

Functions​

identityInitializerFactory()​

identityInitializerFactory(service): () => Promise<void>

Defined in: identity-adapter-angular/src/identity.module.ts:28

APP_INITIALIZER factory.

Angular blocks bootstrap — and therefore the first route render — until every APP_INITIALIZER promise settles. Because IdentityService is listed in deps, Angular must construct it before calling this factory, and constructing it runs identity-core's createIdentityClient(), which resolves the canonical anonymous id and fans onAnonymous out to every registered provider synchronously.

Awaiting state$ (a BehaviorSubject, so it already holds the seeded anonymous state) makes that ordering explicit and gives the initializer a real Promise to hand back rather than a bare undefined.

Known limitation: identity-core's createIdentityClient does not surface the promises returned by async onAnonymous implementations, so this initializer guarantees every provider has been called — not that a provider's own network round-trip has finished. Providers that need to gate rendering on their own readiness should contribute a second APP_INITIALIZER.

Parameters​

service​

IdentityService

Returns​

() => Promise<void>