@zennify/sdk-js 1.0.0-beta.1 → 1.0.0-beta.11
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/.github/workflows/npm-publish-package.yml +1 -1
- package/dist/RequestError.js +43 -0
- package/dist/errors.js +2 -0
- package/dist/interfaces/Media.js +2 -0
- package/dist/interfaces/Panels.js +2 -0
- package/dist/interfaces/Products.js +2 -0
- package/dist/main.js +23 -0
- package/dist/utils.js +15 -0
- package/dist/var.js +8 -0
- package/package.json +5 -1
- package/src/RequestError.ts +4 -3
- package/src/errors.ts +100 -107
- package/src/interfaces/Media.ts +6 -0
- package/src/interfaces/Panels.ts +15 -0
- package/src/interfaces/Products.ts +29 -0
- package/src/main.ts +5 -1
- package/src/utils.ts +21 -10
- package/src/var.ts +5 -3
- package/translations/en_US.json +334 -6
- package/translations/pt_BR.json +330 -2
- package/types/RequestError.d.ts +11 -0
- package/types/errors.d.ts +1 -0
- package/types/interfaces/Media.d.ts +6 -0
- package/types/interfaces/Panels.d.ts +14 -0
- package/types/interfaces/Products.d.ts +28 -0
- package/types/main.d.ts +7 -0
- package/types/utils.d.ts +19 -0
- package/types/var.d.ts +3 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ZennifyAPIRequestError = void 0;
|
|
7
|
+
const pt_BR_json_1 = __importDefault(require("../translations/pt_BR.json"));
|
|
8
|
+
const en_US_json_1 = __importDefault(require("../translations/en_US.json"));
|
|
9
|
+
const var_1 = require("./var");
|
|
10
|
+
const errors_translations = { pt_BR: pt_BR_json_1.default, en_US: en_US_json_1.default };
|
|
11
|
+
const match_regex = /{[\w.]+}/g;
|
|
12
|
+
const replacer = (body, value) => {
|
|
13
|
+
return body[value.slice(1, -1)];
|
|
14
|
+
};
|
|
15
|
+
class ZennifyAPIRequestError extends Error {
|
|
16
|
+
status = 0;
|
|
17
|
+
code = 0;
|
|
18
|
+
body;
|
|
19
|
+
constructor(response, body) {
|
|
20
|
+
super();
|
|
21
|
+
this.body = body;
|
|
22
|
+
this.status = response.status;
|
|
23
|
+
if (this.status === 403) {
|
|
24
|
+
this.name = "Usuário inválido";
|
|
25
|
+
this.message = "Por favor, se re-autentique";
|
|
26
|
+
}
|
|
27
|
+
if (this.status === 503) {
|
|
28
|
+
this.name = "API em atualização.";
|
|
29
|
+
this.message = "Por favor, tente novamente em alguns minutos.";
|
|
30
|
+
}
|
|
31
|
+
if (this.status === 429) {
|
|
32
|
+
this.name = "Calma ai!";
|
|
33
|
+
this.message = "Suas ações estão sendo limitadas!";
|
|
34
|
+
}
|
|
35
|
+
const error = errors_translations[var_1.ZENNIFY_API_RESPONSE_LANGUAGE][body.code] ||
|
|
36
|
+
errors_translations[var_1.ZENNIFY_API_RESPONSE_LANGUAGE]["UNKNOWN_TRANSLATION"];
|
|
37
|
+
this.name = error.name
|
|
38
|
+
.replace(match_regex, (value) => replacer(body, value));
|
|
39
|
+
this.message = error.message
|
|
40
|
+
.replace(match_regex, (value) => replacer(body, value));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.ZennifyAPIRequestError = ZennifyAPIRequestError;
|
package/dist/errors.js
ADDED
package/dist/main.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./var"), exports);
|
|
18
|
+
__exportStar(require("./errors"), exports);
|
|
19
|
+
__exportStar(require("./utils"), exports);
|
|
20
|
+
__exportStar(require("./RequestError"), exports);
|
|
21
|
+
__exportStar(require("./interfaces/Media"), exports);
|
|
22
|
+
__exportStar(require("./interfaces/Panels"), exports);
|
|
23
|
+
__exportStar(require("./interfaces/Products"), exports);
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetResponseError = GetResponseError;
|
|
4
|
+
exports.TreatZennifyResponse = TreatZennifyResponse;
|
|
5
|
+
const RequestError_1 = require("./RequestError");
|
|
6
|
+
function GetResponseError(code, additional = {}) {
|
|
7
|
+
return { code, ...additional };
|
|
8
|
+
}
|
|
9
|
+
async function TreatZennifyResponse(response) {
|
|
10
|
+
const body = await response.json().catch(() => ({}));
|
|
11
|
+
if (response.ok) {
|
|
12
|
+
return body;
|
|
13
|
+
}
|
|
14
|
+
throw new RequestError_1.ZennifyAPIRequestError(response, body);
|
|
15
|
+
}
|
package/dist/var.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZENNIFY_API_RESPONSE_LANGUAGE = void 0;
|
|
4
|
+
exports.SetAPIResponseLanguage = SetAPIResponseLanguage;
|
|
5
|
+
exports.ZENNIFY_API_RESPONSE_LANGUAGE = 'en_US';
|
|
6
|
+
function SetAPIResponseLanguage(lang) {
|
|
7
|
+
return exports.ZENNIFY_API_RESPONSE_LANGUAGE = lang;
|
|
8
|
+
}
|
package/package.json
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zennify/sdk-js",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.11",
|
|
4
4
|
"description": "A simple package to work with https://api.zennify.app",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"keywords": [],
|
|
7
7
|
"author": "josejooj",
|
|
8
8
|
"license": "ISC",
|
|
9
|
+
"publishConfig": {
|
|
10
|
+
"registry": "https://registry.npmjs.org/"
|
|
11
|
+
},
|
|
9
12
|
"repository": {
|
|
10
13
|
"url": "git+https://github.com/zennify-ofc/sdk-js.git"
|
|
11
14
|
},
|
|
15
|
+
"types": "./types/main.d.ts",
|
|
12
16
|
"devDependencies": {
|
|
13
17
|
"@types/node": "^20.12.12",
|
|
14
18
|
"typescript": "^5.5.3"
|
package/src/RequestError.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import pt_BR from '../translations/pt_BR.json';
|
|
2
2
|
import en_US from '../translations/en_US.json';
|
|
3
3
|
import { ZENNIFY_API_RESPONSE_LANGUAGE } from './var';
|
|
4
|
+
import { APIErrors } from './errors';
|
|
4
5
|
|
|
5
6
|
const errors_translations = { pt_BR, en_US };
|
|
6
7
|
const match_regex = /{[\w.]+}/g;
|
|
@@ -9,7 +10,7 @@ const replacer = (body: any, value: string) => {
|
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
type Body = Record<string, any> & {
|
|
12
|
-
code:
|
|
13
|
+
code: APIErrors
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
export class ZennifyAPIRequestError extends Error {
|
|
@@ -41,8 +42,8 @@ export class ZennifyAPIRequestError extends Error {
|
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
const error: { name: string, message: string } =
|
|
44
|
-
errors_translations[ZENNIFY_API_RESPONSE_LANGUAGE][body.code
|
|
45
|
-
errors_translations[ZENNIFY_API_RESPONSE_LANGUAGE]["
|
|
45
|
+
errors_translations[ZENNIFY_API_RESPONSE_LANGUAGE][body.code] ||
|
|
46
|
+
errors_translations[ZENNIFY_API_RESPONSE_LANGUAGE]["UNKNOWN_TRANSLATION"];
|
|
46
47
|
|
|
47
48
|
this.name = error.name
|
|
48
49
|
.replace(match_regex, (value) => replacer(body, value));
|
package/src/errors.ts
CHANGED
|
@@ -1,108 +1,101 @@
|
|
|
1
|
-
export
|
|
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
|
-
// 2000-3000 = payment errors
|
|
46
|
-
INVALID_PAYMENT_METHOD = 2000,
|
|
47
|
-
// 2200-2500
|
|
1
|
+
export type APIErrors =
|
|
2
|
+
// = general errors
|
|
3
|
+
| 'UNKNOWN_ERROR'
|
|
4
|
+
| 'UNKNOWN_TRANSLATION'
|
|
5
|
+
| 'METHOD_NOT_ALLOWED'
|
|
6
|
+
| 'EXPECTED_AN_OBJECT_ARRAY'
|
|
7
|
+
| 'EXPECTED_A_STRING_ARRAY'
|
|
8
|
+
| 'EXPECTED_A_NUMBER_ARRAY'
|
|
9
|
+
| 'EXPECTED_AN_OBJECT'
|
|
10
|
+
| 'EXPECTED_A_NON_EMPTY_OBJECT'
|
|
11
|
+
| 'EXPECTED_A_STRING'
|
|
12
|
+
| 'EXPECTED_A_NUMBER'
|
|
13
|
+
| 'EXPECTED_A_VALID_ID'
|
|
14
|
+
| 'DUPLICATED_VALUES_ISNT_ALLOWED'
|
|
15
|
+
// = oAuth errors
|
|
16
|
+
| 'GRANT_CODE_MISSING_IN_QUERY'
|
|
17
|
+
| 'INVALID_SCOPE'
|
|
18
|
+
| 'VERIFY_YOUR_EMAIL'
|
|
19
|
+
| 'PLEASE_REVERIFY'
|
|
20
|
+
// = user errors
|
|
21
|
+
| 'USER_NOT_FOUND'
|
|
22
|
+
/// password errors
|
|
23
|
+
| 'INVALID_PASSWORD'
|
|
24
|
+
| 'YOU_MUST_INSERT_THE_ACTUAL_PASSWORD'
|
|
25
|
+
| 'THE_PASSWORD_DOES_NOT_MATCH'
|
|
26
|
+
| 'THE_PASSWORD_MUST_HAVE_AT_LEAST_8_CHARACTERS'
|
|
27
|
+
| 'THE_PASSWORD_MUST_HAVE_AT_LEAST_ONE_NUMBER'
|
|
28
|
+
| 'THE_PASSWORD_MUST_HAVE_AT_LEAST_ONE_LETTER'
|
|
29
|
+
| 'THE_PASSWORD_MUST_HAVE_AT_LEAST_ONE_SPECIAL_CHARACTER'
|
|
30
|
+
/// pix key errors
|
|
31
|
+
| 'THE_EMAIL_SENDED_ISNT_VALID'
|
|
32
|
+
| 'CELLPHONE_NUMBERS_MUST_HAVE_THE_9_DIGIT'
|
|
33
|
+
| 'THE_CELLPHONE_NUMBER_MUST_HAVE_ONLY_DIGITS'
|
|
34
|
+
| 'THE_PIX_KEY_INSERTED_ISNT_VALID'
|
|
35
|
+
/// webhook url error
|
|
36
|
+
| 'INSERT_A_VALID_URL'
|
|
37
|
+
| 'THE_ONLY_ACCEPTED_PROTOCOL_IS_HTTPS'
|
|
38
|
+
| 'THIS_DOMAIN_IS_BLACKLISTED'
|
|
39
|
+
| 'THE_URL_EXTENSION_ISNT_ACCEPTED_YET'
|
|
40
|
+
| 'THE_URL_IS_INACCESSIBLE_BY_THE_WEBHOOK_SERVER'
|
|
41
|
+
| 'THE_URL_WOULD_NOT_HAVE_REDIRECTS'
|
|
42
|
+
| 'THE_URL_HAS_TIMEOUT_5S'
|
|
43
|
+
/// payment errors
|
|
44
|
+
| 'INVALID_PAYMENT_METHOD'
|
|
48
45
|
// Order Errors
|
|
49
|
-
YOU_NEED_TO_INSERT_AT_LEAST_1_ITEM
|
|
50
|
-
ONE_PROVIDED_PRODUCT_IS_OUT_OF_STOCK
|
|
51
|
-
WE_DONT_HAVE_THIS_AMOUNT_IN_STOCK
|
|
52
|
-
THIS_SELLER_WAS_BANNED_FROM_ZENNIFY
|
|
53
|
-
WE_DO_NOT_YET_SUPPORT_MULTIPLE_USER_PRODUCTS
|
|
54
|
-
WE_DO_NOT_YET_SUPPORT_MULTIPLE_STORE_PRODUCTS
|
|
55
|
-
YOU_ALREADY_HAVE_ANOTHER_ORDER_WAITING_PAYMENT
|
|
56
|
-
YOU_INSERTED_AN_INVALID_ADDITIONAL
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
//
|
|
76
|
-
UNKNOWN_PRODUCT
|
|
77
|
-
INVALID_PRODUCT_NAME
|
|
78
|
-
INVALID_PRODUCT_VALUE
|
|
79
|
-
YOU_REACHED_THE_PRODUCT_LIMIT
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
YOU_REACHED_THE_PANEL_LIMIT = 3105,
|
|
106
|
-
YOU_ALREADY_HAVE_ANOTHER_PANEL_WITH_THIS_NAME = 3106,
|
|
107
|
-
YOU_REACHED_THE_PRODUCTS_LIMIT_ON_PANEL = 3107,
|
|
108
|
-
}
|
|
46
|
+
| 'YOU_NEED_TO_INSERT_AT_LEAST_1_ITEM'
|
|
47
|
+
| 'ONE_PROVIDED_PRODUCT_IS_OUT_OF_STOCK'
|
|
48
|
+
| 'WE_DONT_HAVE_THIS_AMOUNT_IN_STOCK'
|
|
49
|
+
| 'THIS_SELLER_WAS_BANNED_FROM_ZENNIFY'
|
|
50
|
+
| 'WE_DO_NOT_YET_SUPPORT_MULTIPLE_USER_PRODUCTS'
|
|
51
|
+
| 'WE_DO_NOT_YET_SUPPORT_MULTIPLE_STORE_PRODUCTS'
|
|
52
|
+
| 'YOU_ALREADY_HAVE_ANOTHER_ORDER_WAITING_PAYMENT'
|
|
53
|
+
| 'YOU_INSERTED_AN_INVALID_ADDITIONAL'
|
|
54
|
+
/// bad preference configuration
|
|
55
|
+
| 'THIS_SELLER_HAS_NOT_YET_CONFIGURED_RECEIPT_VIA_PIX'
|
|
56
|
+
| 'THIS_SELLER_HAS_NOT_YET_CONFIGURED_RECEIPT_VIA_BOLETO'
|
|
57
|
+
| 'THIS_SELLER_HAS_NOT_YET_CONFIGURED_RECEIPT_VIA_CRYPTO'
|
|
58
|
+
/// coupons
|
|
59
|
+
| 'THIS_COUPON_DOES_NOT_EXISTS'
|
|
60
|
+
| 'THIS_COUPON_HAS_EXPIRED'
|
|
61
|
+
| 'THIS_COUPON_REACHED_THE_USE_LIMIT'
|
|
62
|
+
| 'SELECT_MORE_ITENS_TO_REACH_MINIMUM_COUPON_VALUE'
|
|
63
|
+
| 'THIS_COUPON_IS_VALID_ONLY_FOR_THE_FIRST_BUY'
|
|
64
|
+
// store errors
|
|
65
|
+
| 'UNKNOWN_STORE'
|
|
66
|
+
| 'UNKNOWN_BANK'
|
|
67
|
+
| 'INVALID_STORE_NAME'
|
|
68
|
+
/// bot errors
|
|
69
|
+
| 'WAIT_OR_TRY_AGAIN_WITH_ANOTHER_DISCORD_BOT'
|
|
70
|
+
| 'INVALID_DISCORD_BOT_TOKEN'
|
|
71
|
+
| 'DISABLE_REQUIRE_CODE_GRANT'
|
|
72
|
+
// product errors
|
|
73
|
+
| 'UNKNOWN_PRODUCT'
|
|
74
|
+
| 'INVALID_PRODUCT_NAME'
|
|
75
|
+
| 'INVALID_PRODUCT_VALUE'
|
|
76
|
+
| 'YOU_REACHED_THE_PRODUCT_LIMIT'
|
|
77
|
+
| 'PRODUCT_NAME_ALREADY_EXIST'
|
|
78
|
+
/// Description errors
|
|
79
|
+
| 'INVALID_PRODUCT_DESCRIPTION_FOR_DISCORD'
|
|
80
|
+
/// Stock errors
|
|
81
|
+
| 'UNKNOWN_STOCK'
|
|
82
|
+
| 'INVALID_STOCK_CONTENT'
|
|
83
|
+
| 'INVALID_STOCK_COST'
|
|
84
|
+
// Media Errors
|
|
85
|
+
| 'UNKNOWN_FILE'
|
|
86
|
+
| 'NO_FILES_FOUND'
|
|
87
|
+
| 'INVALID_FILE_TYPE'
|
|
88
|
+
| 'INVALID_FILE_NAME'
|
|
89
|
+
| 'INVALID_FILE_SIZE'
|
|
90
|
+
| 'YOU_REACHED_STORAGE_LIMIT'
|
|
91
|
+
| 'YOU_REACHED_MEDIA_LIMIT'
|
|
92
|
+
| 'YOU_ALREADY_HAVE_THIS_MEDIA'
|
|
93
|
+
| 'MEDIA_NAME_ALREADY_EXIST'
|
|
94
|
+
// Discord Panels Errors
|
|
95
|
+
| 'UNKNOWN_PANEL'
|
|
96
|
+
| 'INVALID_PANEL_NAME'
|
|
97
|
+
| 'INVALID_PANEL_DESCRIPTION'
|
|
98
|
+
| 'INVALID_PANEL_PLACEHOLDER'
|
|
99
|
+
| 'YOU_REACHED_PANEL_LIMIT'
|
|
100
|
+
| 'PANEL_NAME_ALREADY_EXIST'
|
|
101
|
+
| 'YOU_REACHED_THE_PRODUCT_LIMIT_ON_PANEL'
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface PanelProduct {
|
|
2
|
+
id: number,
|
|
3
|
+
position: number,
|
|
4
|
+
emoji: string
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface Panel {
|
|
8
|
+
id: number,
|
|
9
|
+
name: string,
|
|
10
|
+
placeholder: string,
|
|
11
|
+
description: string | null,
|
|
12
|
+
icon_id: number | null,
|
|
13
|
+
banner_id: number | null,
|
|
14
|
+
products: PanelProduct[]
|
|
15
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface PartialProduct {
|
|
2
|
+
id: number,
|
|
3
|
+
name: string,
|
|
4
|
+
value: number,
|
|
5
|
+
icon_id: number | null,
|
|
6
|
+
banner_id: number | null,
|
|
7
|
+
stock_locked: boolean | null,
|
|
8
|
+
stock_count: number
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface Product {
|
|
12
|
+
id: number,
|
|
13
|
+
name: string,
|
|
14
|
+
created_at: string,
|
|
15
|
+
store_id: number,
|
|
16
|
+
owner_id: number,
|
|
17
|
+
icon_id: null | number,
|
|
18
|
+
banner_id: null | number,
|
|
19
|
+
value: number,
|
|
20
|
+
description: {
|
|
21
|
+
short: null | string,
|
|
22
|
+
discord: null | string,
|
|
23
|
+
website: null | string
|
|
24
|
+
},
|
|
25
|
+
stock: {
|
|
26
|
+
size: number,
|
|
27
|
+
locked: boolean
|
|
28
|
+
}
|
|
29
|
+
}
|
package/src/main.ts
CHANGED
package/src/utils.ts
CHANGED
|
@@ -1,20 +1,31 @@
|
|
|
1
1
|
import { ZennifyAPIRequestError } from './RequestError';
|
|
2
2
|
import { APIErrors } from './errors';
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
type ExpectedErrorAdditional = { field: string; received: any; type: string }
|
|
5
|
+
type ExpectedError = Extract<
|
|
6
|
+
APIErrors,
|
|
7
|
+
| 'EXPECTED_AN_OBJECT_ARRAY'
|
|
8
|
+
| 'EXPECTED_A_STRING_ARRAY'
|
|
9
|
+
| 'EXPECTED_A_NUMBER_ARRAY'
|
|
10
|
+
| 'EXPECTED_AN_OBJECT'
|
|
11
|
+
| 'EXPECTED_A_NON_EMPTY_OBJECT'
|
|
12
|
+
| 'EXPECTED_A_STRING'
|
|
13
|
+
| 'EXPECTED_A_NUMBER'
|
|
14
|
+
| 'EXPECTED_A_VALID_ID'
|
|
15
|
+
>;
|
|
16
|
+
|
|
17
|
+
type CommonError = Exclude<APIErrors, ExpectedError>;
|
|
18
|
+
|
|
19
|
+
export function GetResponseError(code: CommonError): { code: CommonError };
|
|
20
|
+
export function GetResponseError(code: ExpectedError, additional: ExpectedErrorAdditional): { code: ExpectedError } & ExpectedErrorAdditional;
|
|
21
|
+
export function GetResponseError<T extends object>(code: CommonError, additional?: T): { code: CommonError } & T;
|
|
22
|
+
export function GetResponseError(code: APIErrors, additional: any = {}) {
|
|
23
|
+
return { code, ...additional };
|
|
13
24
|
}
|
|
14
25
|
|
|
15
26
|
export async function TreatZennifyResponse<T extends any>(response: Response): Promise<T> {
|
|
16
27
|
|
|
17
|
-
const body = await response.json();
|
|
28
|
+
const body = await response.json().catch(() => ({}));
|
|
18
29
|
|
|
19
30
|
if (response.ok) {
|
|
20
31
|
return body as T;
|
package/src/var.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
type
|
|
2
|
-
|
|
3
|
-
export
|
|
1
|
+
export type SupportedLanguages = 'pt_BR' | 'en_US';
|
|
2
|
+
export let ZENNIFY_API_RESPONSE_LANGUAGE: SupportedLanguages = 'en_US';
|
|
3
|
+
export function SetAPIResponseLanguage(lang: SupportedLanguages) {
|
|
4
|
+
return ZENNIFY_API_RESPONSE_LANGUAGE = lang;
|
|
5
|
+
}
|