mirror of
https://github.com/Unleash/unleash.git
synced 2024-10-18 20:09:08 +02:00
35 lines
922 B
TypeScript
35 lines
922 B
TypeScript
|
// Copy of https://github.com/Unleash/unleash-proxy/blob/main/src/create-context.ts.
|
||
|
|
||
|
/* eslint-disable prefer-object-spread */
|
||
|
import { Context } from 'unleash-client';
|
||
|
|
||
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
||
|
export function createContext(value: any): Context {
|
||
|
const {
|
||
|
appName,
|
||
|
environment,
|
||
|
userId,
|
||
|
sessionId,
|
||
|
remoteAddress,
|
||
|
properties,
|
||
|
...rest
|
||
|
} = value;
|
||
|
|
||
|
// move non root context fields to properties
|
||
|
const context: Context = {
|
||
|
appName,
|
||
|
environment,
|
||
|
userId,
|
||
|
sessionId,
|
||
|
remoteAddress,
|
||
|
properties: Object.assign({}, rest, properties),
|
||
|
};
|
||
|
|
||
|
// Clean undefined properties on the context
|
||
|
const cleanContext = Object.keys(context)
|
||
|
.filter((k) => context[k])
|
||
|
.reduce((a, k) => ({ ...a, [k]: context[k] }), {});
|
||
|
|
||
|
return cleanContext;
|
||
|
}
|