@be-link/ecommerce-promotion-service-node-sdk 0.0.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/utils/http.js ADDED
@@ -0,0 +1,97 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.callApi = callApi;
40
+ const axios_1 = __importDefault(require("axios"));
41
+ const uuid_1 = require("uuid");
42
+ const axios_retry_1 = __importDefault(require("axios-retry"));
43
+ const request_context_1 = require("@fastify/request-context");
44
+ (0, axios_retry_1.default)(axios_1.default, {
45
+ retries: 1,
46
+ retryCondition(error) {
47
+ return error.response?.status === 502;
48
+ },
49
+ retryDelay: (retryCount) => {
50
+ console.info(`retryCount: ${retryCount}, retryDelay: ${retryCount * 500}`);
51
+ return retryCount * 500;
52
+ },
53
+ onRetry(retryCount, error, requestConfig) {
54
+ console.info(`retryCount: ${retryCount}, onRetry: ${error.message}, requestHeader: ${JSON.stringify(requestConfig.headers)}`);
55
+ },
56
+ });
57
+ async function callApi(url, request) {
58
+ const requestId = request_context_1.requestContext.get('requestId') || request_context_1.requestContext.get('traceMessageId') || (0, uuid_1.v4)();
59
+ try {
60
+ console.info(`准备发起ecommerce-promotion-service请求[${requestId}]: ${url}, 参数: ${JSON.stringify(request)}`);
61
+ const response = await axios_1.default.post(url, request, { headers: { 'x-request-id': requestId } });
62
+ const responseData = response.data;
63
+ return responseData.data;
64
+ }
65
+ catch (error) {
66
+ const axiosError = error;
67
+ if (axiosError.response) {
68
+ const response = axiosError.response;
69
+ const data = response.data;
70
+ console.error(`ecommerce-promotion-service 异常: ${axiosError.message},requestId: ${requestId}`);
71
+ console.info('响应信息', data.message);
72
+ console.error('异常堆栈', JSON.stringify(error.stack));
73
+ throw new Error(data.errorType + ' - ' + data.message);
74
+ }
75
+ // 调用dns模块解析url
76
+ const dns = await Promise.resolve().then(() => __importStar(require('dns')));
77
+ const dnsPromise = new Promise((resolve, reject) => {
78
+ const lookupRes = dns.lookup(url, (err, address) => {
79
+ if (err) {
80
+ console.error(err.message);
81
+ reject(err);
82
+ }
83
+ console.info(`lookup: ${JSON.stringify(lookupRes)}`);
84
+ resolve(address);
85
+ });
86
+ });
87
+ try {
88
+ const address = await dnsPromise;
89
+ console.info(`address: ${JSON.stringify(address)}`);
90
+ }
91
+ catch (error) {
92
+ console.info(`error: ${JSON.stringify(error)}`);
93
+ }
94
+ console.error(`ecommerce-promotion-service 未知异常: ${axiosError.message}`, error.stack);
95
+ throw error;
96
+ }
97
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 将驼峰命名转换为短横线命名
3
+ * @param str 驼峰命名字符串
4
+ * @returns 短横线命名字符串
5
+ * @example
6
+ * camelToKebabCase('fetchConfig') // 'fetch-config'
7
+ * camelToKebabCase('getCosTempSecret') // 'get-cos-temp-secret'
8
+ */
9
+ export declare function camelToKebabCase(str: string): string;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.camelToKebabCase = camelToKebabCase;
4
+ /**
5
+ * 将驼峰命名转换为短横线命名
6
+ * @param str 驼峰命名字符串
7
+ * @returns 短横线命名字符串
8
+ * @example
9
+ * camelToKebabCase('fetchConfig') // 'fetch-config'
10
+ * camelToKebabCase('getCosTempSecret') // 'get-cos-temp-secret'
11
+ */
12
+ function camelToKebabCase(str) {
13
+ return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
14
+ }