/
experimental.ts
89 lines (82 loc) · 2.56 KB
/
experimental.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import { parseEnvVarBoolean } from '../util';
export type IFlags = Partial<typeof flags>;
export type IFlagKey = keyof IFlags;
const flags = {
ENABLE_DARK_MODE_SUPPORT: false,
anonymiseEventLog: false,
embedProxy: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_EMBED_PROXY,
true,
),
projectStatusApi: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_PROJECT_STATUS_API,
false,
),
newProjectOverview: parseEnvVarBoolean(
process.env.NEW_PROJECT_OVERVIEW,
false,
),
embedProxyFrontend: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_EMBED_PROXY_FRONTEND,
true,
),
responseTimeWithAppName: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_RESPONSE_TIME_WITH_APP_NAME,
false,
),
proxyReturnAllToggles: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_PROXY_RETURN_ALL_TOGGLES,
false,
),
maintenance: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_MAINTENANCE,
false,
),
maintenanceMode: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_MAINTENANCE_MODE,
false,
),
messageBanner: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_MESSAGE_BANNER,
false,
),
featuresExportImport: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_FEATURES_EXPORT_IMPORT,
false,
),
caseInsensitiveInOperators: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_CASE_INSENSITIVE_IN_OPERATORS,
false,
),
crOnVariants: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_CR_ON_VARIANTS,
false,
),
showProjectApiAccess: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_PROJECT_API_ACCESS,
false,
),
strictSchemaValidation: parseEnvVarBoolean(
process.env.UNLEASH_STRICT_SCHEMA_VALIDTION,
false,
),
notifications: parseEnvVarBoolean(process.env.NOTIFICATIONS, false),
};
export const defaultExperimentalOptions: IExperimentalOptions = {
flags,
externalResolver: { isEnabled: (): boolean => false },
};
export interface IExperimentalOptions {
flags: IFlags;
externalResolver: IExternalFlagResolver;
}
export interface IFlagContext {
[key: string]: string;
}
export interface IFlagResolver {
getAll: (context?: IFlagContext) => IFlags;
isEnabled: (expName: IFlagKey, context?: IFlagContext) => boolean;
}
export interface IExternalFlagResolver {
isEnabled: (flagName: IFlagKey, context?: IFlagContext) => boolean;
}