-
Notifications
You must be signed in to change notification settings - Fork 0
/
BasisTheoryAtomicCards.ts
58 lines (52 loc) · 1.67 KB
/
BasisTheoryAtomicCards.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
import type { AxiosTransformer } from 'axios';
import { createRequestConfig, dataExtractor } from '@/common';
import {
transformAtomicRequestSnakeCase,
transformAtomicResponseCamelCase,
} from '@/common/utils';
import type { BasisTheoryServiceOptions } from '@/service';
import { BasisTheoryService } from '@/service';
import { CrudBuilder } from '@/service/CrudBuilder';
import type {
AtomicCard,
CreateAtomicCard,
UpdateAtomicCard,
} from '@/types/models';
import type { PaginatedQuery, RequestOptions } from '@/types/sdk';
export const BasisTheoryAtomicCards = new CrudBuilder(
class BasisTheoryAtomicCards extends BasisTheoryService {
public constructor(options: BasisTheoryServiceOptions) {
const _options = {
...options,
};
// eslint-disable-next-line unicorn/prefer-spread
_options.transformRequest = ([] as AxiosTransformer[]).concat(
transformAtomicRequestSnakeCase,
options.transformRequest || []
);
// eslint-disable-next-line unicorn/prefer-spread
_options.transformResponse = ([] as AxiosTransformer[]).concat(
transformAtomicResponseCamelCase,
options.transformResponse || []
);
super(_options);
}
public update(
id: string,
request: UpdateAtomicCard,
options?: RequestOptions
): Promise<AtomicCard> {
return this.client
.patch(`/${id}`, request, createRequestConfig(options))
.then(dataExtractor);
}
}
)
.create<AtomicCard, CreateAtomicCard>()
.retrieve<AtomicCard>()
.delete()
.list<AtomicCard, PaginatedQuery>()
.build();
export type BasisTheoryAtomicCards = InstanceType<
typeof BasisTheoryAtomicCards
>;