1
- import { toString , isString , toNumber } from '../../utils/lang' ;
2
- import { sanitizeBoolean as sBoolean } from '../../evaluator/value/sanitize' ;
3
1
import { ILogger } from '../../logger/types' ;
4
2
import { SplitError } from '../../utils/lang/errors' ;
5
3
import { ICustomStorageWrapper } from '../types' ;
6
4
import { LOG_PREFIX } from './constants' ;
7
5
8
- // Sanitizers return the given value if it is of the expected type, or a new sanitized one if invalid.
9
- // @TODO review or remove sanitizers. Could be expensive and error-prone for producer methods
10
-
11
- function sanitizeBoolean ( val : any ) : boolean {
12
- return sBoolean ( val ) || false ;
13
- }
14
- sanitizeBoolean . type = 'boolean' ;
15
-
16
- function sanitizeNumber ( val : any ) : number {
17
- return toNumber ( val ) ;
18
- }
19
- sanitizeNumber . type = 'number' ;
20
-
21
- function sanitizeArrayOfStrings ( val : any ) : string [ ] {
22
- if ( ! Array . isArray ( val ) ) return [ ] ; // if not an array, returns a new empty one
23
- if ( val . every ( isString ) ) return val ; // if all items are valid, return the given array
24
- return val . filter ( isString ) ; // otherwise, return a new array filtering the invalid items
25
- }
26
- sanitizeArrayOfStrings . type = 'Array<string>' ;
27
-
28
- function sanitizeNullableString ( val : any ) : string | null {
29
- if ( val === null ) return val ;
30
- return toString ( val ) ; // if not null, sanitize value as an string
31
- }
32
- sanitizeNullableString . type = 'string | null' ;
33
-
34
- function sanitizeArrayOfNullableStrings ( val : any ) : ( string | null ) [ ] {
35
- const isStringOrNull = ( v : any ) => v === null || isString ( v ) ;
36
- if ( ! Array . isArray ( val ) ) return [ ] ;
37
- if ( val . every ( isStringOrNull ) ) return val ;
38
- return val . filter ( isStringOrNull ) ; // otherwise, return a new array with items sanitized
39
- }
40
- sanitizeArrayOfNullableStrings . type = 'Array<string | null>' ;
41
-
42
- const METHODS_TO_PROMISE_WRAP : [ string , undefined | { ( val : any ) : any , type : string } ] [ ] = [
43
- [ 'get' , sanitizeNullableString ] ,
44
- [ 'set' , sanitizeBoolean ] ,
45
- [ 'getAndSet' , sanitizeNullableString ] ,
46
- [ 'del' , sanitizeBoolean ] ,
47
- [ 'getKeysByPrefix' , sanitizeArrayOfStrings ] ,
48
- [ 'getByPrefix' , sanitizeArrayOfStrings ] ,
49
- [ 'incr' , sanitizeBoolean ] ,
50
- [ 'decr' , sanitizeBoolean ] ,
51
- [ 'getMany' , sanitizeArrayOfNullableStrings ] ,
52
- [ 'pushItems' , undefined ] ,
53
- [ 'popItems' , sanitizeArrayOfStrings ] ,
54
- [ 'getItemsCount' , sanitizeNumber ] ,
55
- [ 'itemContains' , sanitizeBoolean ] ,
56
- [ 'connect' , sanitizeBoolean ] ,
57
- [ 'close' , undefined ] ,
6
+ const METHODS_TO_PROMISE_WRAP : string [ ] = [
7
+ 'get' ,
8
+ 'set' ,
9
+ 'getAndSet' ,
10
+ 'del' ,
11
+ 'getKeysByPrefix' ,
12
+ 'getByPrefix' ,
13
+ 'incr' ,
14
+ 'decr' ,
15
+ 'getMany' ,
16
+ 'pushItems' ,
17
+ 'popItems' ,
18
+ 'getItemsCount' ,
19
+ 'itemContains' ,
20
+ 'connect' ,
21
+ 'close'
58
22
] ;
59
23
60
24
/**
@@ -69,7 +33,7 @@ export function wrapperAdapter(log: ILogger, wrapper: ICustomStorageWrapper): IC
69
33
70
34
const wrapperAdapter : Record < string , Function > = { } ;
71
35
72
- METHODS_TO_PROMISE_WRAP . forEach ( ( [ method , sanitizer ] ) => {
36
+ METHODS_TO_PROMISE_WRAP . forEach ( ( method ) => {
73
37
74
38
// Logs error and wraps it into an SplitError object (required to handle user callback errors in SDK readiness events)
75
39
function handleError ( e : any ) {
@@ -80,15 +44,7 @@ export function wrapperAdapter(log: ILogger, wrapper: ICustomStorageWrapper): IC
80
44
wrapperAdapter [ method ] = function ( ) {
81
45
try {
82
46
// @ts -ignore
83
- return wrapper [ method ] . apply ( wrapper , arguments ) . then ( ( value => {
84
- if ( ! sanitizer ) return value ;
85
- const sanitizedValue = sanitizer ( value ) ;
86
-
87
- // if value had to be sanitized, log a warning
88
- if ( sanitizedValue !== value ) log . warn ( `${ LOG_PREFIX } Attempted to sanitize return value [${ value } ] of wrapper '${ method } ' operation which should be of type [${ sanitizer . type } ]. Sanitized and processed value => [${ sanitizedValue } ]` ) ;
89
-
90
- return sanitizedValue ;
91
- } ) ) . catch ( handleError ) ;
47
+ return wrapper [ method ] . apply ( wrapper , arguments ) . then ( value => value ) . catch ( handleError ) ;
92
48
} catch ( e ) {
93
49
return handleError ( e ) ;
94
50
}
0 commit comments