1- import type { ValidatorType } from './Validator'
21import type { AxiosError , AxiosInstance , Method , AxiosRequestConfig , AxiosResponse } from 'axios'
32import type { IParseOptions } from 'qs'
43import { isObject , isArray } from 'lodash'
@@ -13,23 +12,18 @@ interface AxiosResponseData {
1312 [ key : string | number ] : any
1413}
1514
16- class BaseService {
17- errors : ValidatorType
18- parameters : Record < string , any >
19- endpoint : string
15+ export default class BaseService {
16+ public errors = Validator
2017 static $http : AxiosInstance
2118 static $errorProperty = 'errors'
19+ static $resetParameter ? = false
2220 static $parsedQs : IParseOptions = {
2321 comma : true ,
2422 allowDots : true ,
2523 ignoreQueryPrefix : true ,
2624 }
2725
28- constructor ( endpoint : string , parameters : Record < string , any > ) {
29- this . endpoint = endpoint
30- this . parameters = parameters
31- this . errors = Validator
32- }
26+ constructor ( readonly endpoint : string , public parameters : Record < string , any > = { } ) { }
3327
3428 get $http ( ) {
3529 return BaseService . $http
@@ -39,6 +33,10 @@ class BaseService {
3933 return BaseService . $errorProperty
4034 }
4135
36+ get $resetParameter ( ) {
37+ return BaseService . $resetParameter
38+ }
39+
4240 get $parsedQs ( ) {
4341 return BaseService . $parsedQs
4442 }
@@ -85,15 +83,7 @@ class BaseService {
8583 return this . delete < T > ( id )
8684 }
8785
88- submit < T = any > ( method : Method , url ?: string | number , form ?: any , config ?: AxiosRequestConfig ) {
89- return new Promise < T > ( ( resolve , reject ) => {
90- this . $submit < T > ( method , url , form , config )
91- . then ( ( { data } ) => resolve ( data ) )
92- . catch ( ( err ) => reject ( err ) )
93- } )
94- }
95-
96- $submit < T = any > ( method : Method , param ?: string | number , form ?: any , config ?: AxiosRequestConfig ) {
86+ $submit < T = any , F = any > ( method : Method , param ?: string | number , form ?: F , config ?: AxiosRequestConfig ) {
9787 this . beforeSubmit ( )
9888 return new Promise < AxiosResponse < T > > ( ( resolve , reject ) => {
9989 const data = hasFiles ( form ) ? objectToFormData ( form ) : form
@@ -117,6 +107,15 @@ class BaseService {
117107 }
118108 reject ( error )
119109 } )
110+ if ( this . $resetParameter ) this . removeParameters ( )
111+ } )
112+ }
113+
114+ submit < T = any , F = any > ( method : Method , url ?: string | number , form ?: F , config ?: AxiosRequestConfig ) {
115+ return new Promise < T > ( ( resolve , reject ) => {
116+ this . $submit < T > ( method , url , form , config )
117+ . then ( ( { data } ) => resolve ( data ) )
118+ . catch ( ( err ) => reject ( err ) )
120119 } )
121120 }
122121
@@ -125,14 +124,14 @@ class BaseService {
125124 return `${ url } ${ query } `
126125 }
127126
128- setParameters ( parameters : Record < string , any > ) : this {
127+ setParameters ( parameters : Record < string , any > ) {
129128 Object . keys ( parameters ) . forEach ( ( key ) => {
130129 this . parameters [ key ] = parameters [ key ]
131130 } )
132131 return this
133132 }
134133
135- setParameter ( parameter : string , value ?: any ) : this {
134+ setParameter ( parameter : string , value ?: any ) {
136135 if ( ! value ) {
137136 const options : IParseOptions = Object . assign ( { } , this . $parsedQs , {
138137 comma : true ,
@@ -146,16 +145,16 @@ class BaseService {
146145 return this
147146 }
148147
149- removeParameters ( parameters = [ ] as any [ ] ) : this {
148+ removeParameters ( parameters : string [ ] = [ ] ) {
150149 if ( ! parameters || ! parameters . length ) {
151- this . parameters = [ ]
150+ this . parameters = { }
152151 } else if ( isArray ( parameters ) ) {
153152 for ( const parameter of parameters ) delete this . parameters [ parameter ]
154153 }
155154 return this
156155 }
157156
158- removeParameter ( parameter : string ) : this {
157+ removeParameter ( parameter : string ) {
159158 delete this . parameters [ parameter ]
160159 return this
161160 }
@@ -182,5 +181,3 @@ class BaseService {
182181 validator . successful = true
183182 }
184183}
185-
186- export default BaseService
0 commit comments