11import got from 'got' ;
2+ import { integrations , LDEvaluationDetail } from '@launchdarkly/js-server-sdk-common' ;
3+ import { BaseTestHook } from '../shared/BaseTestHook.js' ;
24
3- import { integrations , LDEvaluationDetail } from '@launchdarkly/node-server-sdk' ;
4-
5- export interface HookData {
6- beforeEvaluation ?: Record < string , unknown > ;
7- afterEvaluation ?: Record < string , unknown > ;
8- }
9-
10- export interface HookErrors {
11- beforeEvaluation ?: string ;
12- afterEvaluation ?: string ;
13- }
14-
15- export default class TestHook implements integrations . Hook {
16- private _name : string ;
17- private _endpoint : string ;
18- private _data ?: HookData ;
19- private _errors ?: HookErrors ;
20-
21- constructor ( name : string , endpoint : string , data ?: HookData , errors ?: HookErrors ) {
22- this . _name = name ;
23- this . _endpoint = endpoint ;
24- this . _data = data ;
25- this . _errors = errors ;
26- }
27-
28- private async _safePost ( body : unknown ) : Promise < void > {
5+ export default class TestHook extends BaseTestHook implements integrations . Hook {
6+ protected async _safePost ( body : unknown ) : Promise < void > {
297 try {
308 await got . post ( this . _endpoint , { json : body } ) ;
319 } catch {
@@ -34,42 +12,29 @@ export default class TestHook implements integrations.Hook {
3412 }
3513 }
3614
37- getMetadata ( ) : integrations . HookMetadata {
38- return {
39- name : this . _name ,
40- } ;
15+ override getMetadata ( ) : integrations . HookMetadata {
16+ return super . getMetadata ( ) ;
4117 }
4218
4319 beforeEvaluation (
4420 hookContext : integrations . EvaluationSeriesContext ,
4521 data : integrations . EvaluationSeriesData ,
4622 ) : integrations . EvaluationSeriesData {
47- if ( this . _errors ?. beforeEvaluation ) {
48- throw new Error ( this . _errors . beforeEvaluation ) ;
49- }
50- this . _safePost ( {
51- evaluationSeriesContext : hookContext ,
52- evaluationSeriesData : data ,
53- stage : 'beforeEvaluation' ,
54- } ) ;
55- return { ...data , ...( this . _data ?. beforeEvaluation || { } ) } ;
23+ return this . _beforeEvaluationImpl (
24+ hookContext as unknown as Record < string , unknown > ,
25+ data ,
26+ ) as integrations . EvaluationSeriesData ;
5627 }
5728
5829 afterEvaluation (
5930 hookContext : integrations . EvaluationSeriesContext ,
6031 data : integrations . EvaluationSeriesData ,
6132 detail : LDEvaluationDetail ,
6233 ) : integrations . EvaluationSeriesData {
63- if ( this . _errors ?. afterEvaluation ) {
64- throw new Error ( this . _errors . afterEvaluation ) ;
65- }
66- this . _safePost ( {
67- evaluationSeriesContext : hookContext ,
68- evaluationSeriesData : data ,
69- stage : 'afterEvaluation' ,
70- evaluationDetail : detail ,
71- } ) ;
72-
73- return { ...data , ...( this . _data ?. afterEvaluation || { } ) } ;
34+ return this . _afterEvaluationImpl (
35+ hookContext as unknown as Record < string , unknown > ,
36+ data ,
37+ detail ,
38+ ) as integrations . EvaluationSeriesData ;
7439 }
7540}
0 commit comments