@leancodepl/axios-cqrs-client 7.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs.d.ts +1 -0
- package/index.cjs.js +98 -0
- package/index.esm.js +90 -0
- package/package.json +11 -0
- package/src/index.d.ts +1 -0
- package/src/lib/mkCqrsClient.d.ts +14 -0
package/index.cjs.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./src/index";
|
package/index.cjs.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var validation = require('@leancodepl/validation');
|
|
6
|
+
var axios = require('axios');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
|
+
|
|
10
|
+
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
|
|
11
|
+
|
|
12
|
+
function createSuccess(result) {
|
|
13
|
+
return {
|
|
14
|
+
isSuccess: true,
|
|
15
|
+
result
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function createError(error) {
|
|
19
|
+
return {
|
|
20
|
+
isSuccess: false,
|
|
21
|
+
error
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function mkCqrsClient(cqrsEndpoint, tokenProvider) {
|
|
25
|
+
const apiAxios = axios__default["default"].create({
|
|
26
|
+
baseURL: cqrsEndpoint
|
|
27
|
+
});
|
|
28
|
+
apiAxios.interceptors.request.use(async (config)=>{
|
|
29
|
+
var _tokenProvider;
|
|
30
|
+
const token = await ((_tokenProvider = tokenProvider) == null ? void 0 : _tokenProvider.getToken());
|
|
31
|
+
if (token) {
|
|
32
|
+
config.headers.set("Authorization", `Bearer ${token}`);
|
|
33
|
+
}
|
|
34
|
+
return config;
|
|
35
|
+
});
|
|
36
|
+
apiAxios.interceptors.response.use((response)=>{
|
|
37
|
+
response.data = createSuccess(response.data);
|
|
38
|
+
return response;
|
|
39
|
+
}, async (error)=>{
|
|
40
|
+
const response = error.response;
|
|
41
|
+
switch(error.response.status){
|
|
42
|
+
case 401:
|
|
43
|
+
{
|
|
44
|
+
var _config_params, _tokenProvider;
|
|
45
|
+
const config = error.config;
|
|
46
|
+
if ((_config_params = config.params) == null ? void 0 : _config_params.isRetry) {
|
|
47
|
+
response.data = createError("The request has not been authorized and token refresh did not help");
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
if (!((_tokenProvider = tokenProvider) == null ? void 0 : _tokenProvider.invalidateToken)) {
|
|
51
|
+
response.data = createError("User needs to be authenticated to execute the command/query/operation");
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
if (!await tokenProvider.invalidateToken()) {
|
|
55
|
+
response.data = createError("Cannot refresh access token after the server returned 401 Unauthorized");
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
config.params = error.config.params || {};
|
|
59
|
+
config.params.isRetry = true;
|
|
60
|
+
return await apiAxios.request(config);
|
|
61
|
+
}
|
|
62
|
+
case 400:
|
|
63
|
+
response.data = createError("The request was malformed");
|
|
64
|
+
break;
|
|
65
|
+
case 403:
|
|
66
|
+
response.data = createError("User is not authorized to execute the command/query/operation");
|
|
67
|
+
break;
|
|
68
|
+
case 404:
|
|
69
|
+
response.data = createError("Command/query/operation not found");
|
|
70
|
+
break;
|
|
71
|
+
case 422:
|
|
72
|
+
response.data = createSuccess(error.response.data);
|
|
73
|
+
break;
|
|
74
|
+
default:
|
|
75
|
+
response.data = createError(`Cannot execute command/query/operation, server returned a ${error.response.status} code`);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
return response;
|
|
79
|
+
});
|
|
80
|
+
return {
|
|
81
|
+
createQuery (type) {
|
|
82
|
+
return (dto)=>apiAxios.post("query/" + type, dto).then((r)=>r.data);
|
|
83
|
+
},
|
|
84
|
+
createOperation (type) {
|
|
85
|
+
return (dto)=>apiAxios.post("operation/" + type, dto).then((r)=>r.data);
|
|
86
|
+
},
|
|
87
|
+
createCommand (type, errorCodesMap) {
|
|
88
|
+
async function call(dto) {
|
|
89
|
+
const response = await apiAxios.post("command/" + type, dto);
|
|
90
|
+
return response.data;
|
|
91
|
+
}
|
|
92
|
+
call.handle = (dto)=>call(dto).then((response)=>validation.handleResponse(response, errorCodesMap));
|
|
93
|
+
return call;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
exports.mkCqrsClient = mkCqrsClient;
|
package/index.esm.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { handleResponse } from '@leancodepl/validation';
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
|
|
4
|
+
function createSuccess(result) {
|
|
5
|
+
return {
|
|
6
|
+
isSuccess: true,
|
|
7
|
+
result
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
function createError(error) {
|
|
11
|
+
return {
|
|
12
|
+
isSuccess: false,
|
|
13
|
+
error
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function mkCqrsClient(cqrsEndpoint, tokenProvider) {
|
|
17
|
+
const apiAxios = axios.create({
|
|
18
|
+
baseURL: cqrsEndpoint
|
|
19
|
+
});
|
|
20
|
+
apiAxios.interceptors.request.use(async (config)=>{
|
|
21
|
+
var _tokenProvider;
|
|
22
|
+
const token = await ((_tokenProvider = tokenProvider) == null ? void 0 : _tokenProvider.getToken());
|
|
23
|
+
if (token) {
|
|
24
|
+
config.headers.set("Authorization", `Bearer ${token}`);
|
|
25
|
+
}
|
|
26
|
+
return config;
|
|
27
|
+
});
|
|
28
|
+
apiAxios.interceptors.response.use((response)=>{
|
|
29
|
+
response.data = createSuccess(response.data);
|
|
30
|
+
return response;
|
|
31
|
+
}, async (error)=>{
|
|
32
|
+
const response = error.response;
|
|
33
|
+
switch(error.response.status){
|
|
34
|
+
case 401:
|
|
35
|
+
{
|
|
36
|
+
var _config_params, _tokenProvider;
|
|
37
|
+
const config = error.config;
|
|
38
|
+
if ((_config_params = config.params) == null ? void 0 : _config_params.isRetry) {
|
|
39
|
+
response.data = createError("The request has not been authorized and token refresh did not help");
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
if (!((_tokenProvider = tokenProvider) == null ? void 0 : _tokenProvider.invalidateToken)) {
|
|
43
|
+
response.data = createError("User needs to be authenticated to execute the command/query/operation");
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
if (!await tokenProvider.invalidateToken()) {
|
|
47
|
+
response.data = createError("Cannot refresh access token after the server returned 401 Unauthorized");
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
config.params = error.config.params || {};
|
|
51
|
+
config.params.isRetry = true;
|
|
52
|
+
return await apiAxios.request(config);
|
|
53
|
+
}
|
|
54
|
+
case 400:
|
|
55
|
+
response.data = createError("The request was malformed");
|
|
56
|
+
break;
|
|
57
|
+
case 403:
|
|
58
|
+
response.data = createError("User is not authorized to execute the command/query/operation");
|
|
59
|
+
break;
|
|
60
|
+
case 404:
|
|
61
|
+
response.data = createError("Command/query/operation not found");
|
|
62
|
+
break;
|
|
63
|
+
case 422:
|
|
64
|
+
response.data = createSuccess(error.response.data);
|
|
65
|
+
break;
|
|
66
|
+
default:
|
|
67
|
+
response.data = createError(`Cannot execute command/query/operation, server returned a ${error.response.status} code`);
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
return response;
|
|
71
|
+
});
|
|
72
|
+
return {
|
|
73
|
+
createQuery (type) {
|
|
74
|
+
return (dto)=>apiAxios.post("query/" + type, dto).then((r)=>r.data);
|
|
75
|
+
},
|
|
76
|
+
createOperation (type) {
|
|
77
|
+
return (dto)=>apiAxios.post("operation/" + type, dto).then((r)=>r.data);
|
|
78
|
+
},
|
|
79
|
+
createCommand (type, errorCodesMap) {
|
|
80
|
+
async function call(dto) {
|
|
81
|
+
const response = await apiAxios.post("command/" + type, dto);
|
|
82
|
+
return response.data;
|
|
83
|
+
}
|
|
84
|
+
call.handle = (dto)=>call(dto).then((response)=>handleResponse(response, errorCodesMap));
|
|
85
|
+
return call;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export { mkCqrsClient };
|
package/package.json
ADDED
package/src/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./lib/mkCqrsClient";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ApiError, ApiResponse, ApiSuccess, CommandResult, TokenProvider } from "@leancodepl/cqrs-client-base";
|
|
2
|
+
export declare function mkCqrsClient(cqrsEndpoint: string, tokenProvider?: TokenProvider): {
|
|
3
|
+
createQuery<TQuery, TResult>(type: string): (dto: TQuery) => Promise<ApiError | ApiSuccess<TResult>>;
|
|
4
|
+
createOperation<TOperation, TResult_1>(type: string): (dto: TOperation) => Promise<ApiError | ApiSuccess<TResult_1>>;
|
|
5
|
+
createCommand<TCommand, TErrorCodes extends {
|
|
6
|
+
[name: string]: number;
|
|
7
|
+
}>(type: string, errorCodesMap: TErrorCodes): {
|
|
8
|
+
(dto: TCommand): Promise<ApiResponse<CommandResult<TErrorCodes>>>;
|
|
9
|
+
handle(dto: TCommand): Promise<import("@leancodepl/validation").ValidationErrorsHandler<TErrorCodes & {
|
|
10
|
+
readonly success: -1;
|
|
11
|
+
readonly failure: -2;
|
|
12
|
+
}, never>>;
|
|
13
|
+
};
|
|
14
|
+
};
|