Skip to content

Commit

Permalink
chore: drop event hook (#3565)
Browse files Browse the repository at this point in the history
## About the changes
Ref:
https://docs.getunleash.io/reference/deploy/configuring-unleash#further-customization
> **eventHook** (`function(event, data)`) - (_deprecated in Unleash 4.3_
in favor of the [Webhook addon](../addons/webhook.md)) If provided, this
function will be invoked whenever a feature is mutated. The possible
values for `event` are `'feature-created'`, `'feature-archived'` and
`'feature-revived'`. The `data` argument contains information about the
mutation. Its fields are `type` (string) - the event type (same as
`event`); `createdBy` (string) - the user who performed the mutation;
`data` - the contents of the change. The contents in `data` differs
based on the event type; For `'feature-archived'` and
`'feature-revived'`, the only field will be `name` - the name of the
feature. For `'feature-created'` the data follows a schema defined in
the code
[here](https://github.com/Unleash/unleash/blob/7b7f0b84e8cddd5880dcf29c231672113224b9a7/src/lib/schema/feature-schema.ts#L77).
See an [api here](/reference/api/legacy/unleash/admin/events).


Related to: #1265
  • Loading branch information
gastonfournier committed Apr 21, 2023
1 parent 96633f1 commit ca01a79
Show file tree
Hide file tree
Showing 10 changed files with 25 additions and 95 deletions.
1 change: 0 additions & 1 deletion src/lib/__snapshots__/create-config.test.ts.snap
Expand Up @@ -61,7 +61,6 @@ exports[`should create default config 1`] = `
"_maxListeners": undefined,
Symbol(kCapture): false,
},
"eventHook": undefined,
"experimental": {
"externalResolver": {
"isEnabled": [Function],
Expand Down
27 changes: 15 additions & 12 deletions src/lib/create-config.ts
Expand Up @@ -45,13 +45,14 @@ import {
import FlagResolver from './util/flag-resolver';
import { validateOrigins } from './util/validateOrigin';

const safeToUpper = (s: string) => (s ? s.toUpperCase() : s);
const safeToUpper = (s?: string) => (s ? s.toUpperCase() : s);

export function authTypeFromString(
s?: string,
defaultType: IAuthType = IAuthType.OPEN_SOURCE,
): IAuthType {
return IAuthType[safeToUpper(s)] || defaultType;
const upperS = safeToUpper(s);
return upperS && IAuthType[upperS] ? IAuthType[upperS] : defaultType;
}

function mergeAll<T>(objects: Partial<T>[]): T {
Expand Down Expand Up @@ -93,7 +94,7 @@ function loadClientCachingOptions(

return mergeAll([
defaultClientCachingOptions,
options.clientFeatureCaching,
options.clientFeatureCaching || {},
envs,
]);
}
Expand Down Expand Up @@ -249,7 +250,10 @@ const formatServerOptions = (
};
};

const loadTokensFromString = (tokenString: String, tokenType: ApiTokenType) => {
const loadTokensFromString = (
tokenString: String | undefined,
tokenType: ApiTokenType,
) => {
if (!tokenString) {
return [];
}
Expand Down Expand Up @@ -297,7 +301,7 @@ const loadEnvironmentEnableOverrides = () => {
};

const parseCspConfig = (
cspConfig: ICspDomainOptions,
cspConfig?: ICspDomainOptions,
): ICspDomainConfig | undefined => {
if (!cspConfig) {
return undefined;
Expand Down Expand Up @@ -366,12 +370,12 @@ export function createConfig(options: IUnleashOptions): IUnleashConfig {
defaultDbOptions,
dbPort(extraDbOptions),
dbPort(fileDbOptions),
options.db,
options.db || {},
]);

const session: ISessionOption = mergeAll([
defaultSessionOption,
options.session,
options.session || {},
]);

const logLevel =
Expand All @@ -381,12 +385,12 @@ export function createConfig(options: IUnleashOptions): IUnleashConfig {

const server: IServerOption = mergeAll([
defaultServerOption,
formatServerOptions(options.server),
formatServerOptions(options.server) || {},
]);

const versionCheck: IVersionOption = mergeAll([
defaultVersionOption,
options.versionCheck,
options.versionCheck || {},
]);

const initApiTokens = loadInitApiTokens();
Expand All @@ -403,15 +407,15 @@ export function createConfig(options: IUnleashOptions): IUnleashConfig {

const importSetting: IImportOption = mergeAll([
defaultImport,
options.import,
options.import || {},
]);

const experimental = loadExperimental(options);
const flagResolver = new FlagResolver(experimental);

const ui = loadUI(options);

const email: IEmailOption = mergeAll([defaultEmail, options.email]);
const email: IEmailOption = mergeAll([defaultEmail, options.email || {}]);

let listen: IListeningPipe | IListeningHost;
if (server.pipe) {
Expand Down Expand Up @@ -483,7 +487,6 @@ export function createConfig(options: IUnleashOptions): IUnleashConfig {
disableLegacyFeaturesApi,
preHook: options.preHook,
preRouterHook: options.preRouterHook,
eventHook: options.eventHook,
enterpriseVersion: options.enterpriseVersion,
eventBus: new EventEmitter(),
environmentEnableOverrides,
Expand Down
29 changes: 0 additions & 29 deletions src/lib/event-hook.test.ts

This file was deleted.

26 changes: 0 additions & 26 deletions src/lib/event-hook.ts

This file was deleted.

1 change: 0 additions & 1 deletion src/lib/internals.ts
@@ -1,6 +1,5 @@
export * from './logger';
export * from './metrics';
export * from './event-hook';
export * from './metric-events';
export * from './default-custom-auth-deny-all';
export * from './addons';
Expand Down
14 changes: 0 additions & 14 deletions src/lib/server-impl.test.ts
Expand Up @@ -93,20 +93,6 @@ test('should call preRouterHook', async () => {
await stop();
});

test('should call eventHook', async () => {
let called = 0;
const config = createTestConfig({
server: { port: 0 },
eventHook: () => {
called++;
},
});
const { stop } = await start(config);
eventStore.emit('feature-created', {});
expect(called === 1).toBe(true);
await stop();
});

test('should auto-create server on start()', async () => {
const { server, stop } = await start(
createTestConfig({ server: { port: 0 } }),
Expand Down
4 changes: 0 additions & 4 deletions src/lib/server-impl.ts
Expand Up @@ -7,7 +7,6 @@ import { createMetricsMonitor } from './metrics';
import { createStores } from './db';
import { createServices, scheduleServices } from './services';
import { createConfig } from './create-config';
import { addEventHook } from './event-hook';
import registerGracefulShutdown from './util/graceful-shutdown';
import { createDb } from './db/db-pool';
import sessionDb from './middleware/session-db';
Expand Down Expand Up @@ -70,9 +69,6 @@ async function createApp(
}
const app = await getApp(config, stores, services, unleashSession, db);

if (typeof config.eventHook === 'function') {
addEventHook(config.eventHook, stores.eventStore);
}
await metricsMonitor.startMonitoring(
config,
stores,
Expand Down
4 changes: 0 additions & 4 deletions src/lib/types/option.ts
Expand Up @@ -4,8 +4,6 @@ import { ILegacyApiTokenCreate } from './models/api-token';
import { IFlagResolver, IExperimentalOptions, IFlags } from './experimental';
import SMTPTransport from 'nodemailer/lib/smtp-transport';

export type EventHook = (eventName: string, data: object) => void;

export interface ISSLOption {
rejectUnauthorized: boolean;
ca?: string;
Expand Down Expand Up @@ -112,7 +110,6 @@ export interface IUnleashOptions {
enableOAS?: boolean;
preHook?: Function;
preRouterHook?: Function;
eventHook?: EventHook;
enterpriseVersion?: string;
disableLegacyFeaturesApi?: boolean;
inlineSegmentConstraints?: boolean;
Expand Down Expand Up @@ -195,7 +192,6 @@ export interface IUnleashConfig {
enableOAS: boolean;
preHook?: Function;
preRouterHook?: Function;
eventHook?: EventHook;
enterpriseVersion?: string;
eventBus: EventEmitter;
disableLegacyFeaturesApi?: boolean;
Expand Down
6 changes: 3 additions & 3 deletions src/lib/util/format-base-uri.ts
@@ -1,14 +1,14 @@
export const formatBaseUri = (input: string): string => {
export const formatBaseUri = (input?: string): string => {
if (!input) return '';
const firstChar = input[0];
const lastChar = input[input.length - 1];

if (firstChar === '/' && lastChar === '/') {
return input.substr(0, input.length - 1);
return input.substring(0, input.length - 1);
}

if (firstChar !== '/' && lastChar === '/') {
return `/${input.substr(0, input.length - 1)}`;
return `/${input.substring(0, input.length - 1)}`;
}

if (firstChar !== '/') {
Expand Down
8 changes: 7 additions & 1 deletion src/lib/util/parseEnvVar.ts
@@ -1,4 +1,10 @@
export function parseEnvVarNumber(envVar: string, defaultVal: number): number {
export function parseEnvVarNumber(
envVar: string | undefined,
defaultVal: number,
): number {
if (!envVar) {
return defaultVal;
}
const parsed = Number.parseInt(envVar, 10);

if (Number.isNaN(parsed)) {
Expand Down

0 comments on commit ca01a79

Please sign in to comment.