@longvansoftware/storefront-js-client 3.1.5 → 3.1.6

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.
Files changed (37) hide show
  1. package/README.md +221 -221
  2. package/dist/src/graphql/auth/mutations.js +224 -224
  3. package/dist/src/graphql/auth/queries.js +59 -59
  4. package/dist/src/graphql/campaign/mutations.js +26 -26
  5. package/dist/src/graphql/campaign/queries.js +375 -375
  6. package/dist/src/graphql/cashbook/queries.js +93 -93
  7. package/dist/src/graphql/cloud/mutations.js +103 -103
  8. package/dist/src/graphql/cloud/queries.js +112 -112
  9. package/dist/src/graphql/computing/mutations.js +96 -96
  10. package/dist/src/graphql/computing/queries.js +41 -41
  11. package/dist/src/graphql/crm/mutations.js +813 -813
  12. package/dist/src/graphql/crm/queries.js +661 -661
  13. package/dist/src/graphql/fragments/product.d.ts +38 -0
  14. package/dist/src/graphql/fragments/product.js +196 -0
  15. package/dist/src/graphql/payment/mutations.js +146 -146
  16. package/dist/src/graphql/payment/queries.js +116 -116
  17. package/dist/src/graphql/paymentV2/mutations.js +47 -47
  18. package/dist/src/graphql/paymentV2/queries.js +176 -176
  19. package/dist/src/graphql/product/mutations.js +94 -94
  20. package/dist/src/graphql/product/queries.js +472 -472
  21. package/dist/src/graphql/service/mutations.js +304 -304
  22. package/dist/src/graphql/service/queries.js +131 -131
  23. package/dist/src/graphql/store/mutations.js +24 -24
  24. package/dist/src/graphql/store/queries.js +24 -24
  25. package/dist/src/graphql/user/mutations.js +142 -142
  26. package/dist/src/graphql/user/queries.d.ts +1 -0
  27. package/dist/src/graphql/user/queries.js +319 -299
  28. package/dist/src/lib/serviceSDK.js +12 -12
  29. package/dist/src/lib/shareZalo/index.d.ts +5 -0
  30. package/dist/src/lib/shareZalo/index.js +32 -0
  31. package/dist/src/lib/user/index.d.ts +2 -1
  32. package/dist/src/lib/user/index.js +20 -2
  33. package/dist/src/types/common.d.ts +264 -0
  34. package/dist/src/types/common.js +35 -0
  35. package/dist/src/utils/errorHandler.d.ts +64 -0
  36. package/dist/src/utils/errorHandler.js +197 -0
  37. package/package.json +44 -44
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RetryManager = exports.ErrorHandler = exports.EnhancedSDKError = exports.ErrorSeverity = exports.ErrorType = void 0;
13
+ const serviceSDK_1 = require("../lib/serviceSDK");
14
+ /**
15
+ * Error types for better categorization
16
+ */
17
+ var ErrorType;
18
+ (function (ErrorType) {
19
+ ErrorType["GRAPHQL_ERROR"] = "GRAPHQL_ERROR";
20
+ ErrorType["NETWORK_ERROR"] = "NETWORK_ERROR";
21
+ ErrorType["REST_API_ERROR"] = "REST_API_ERROR";
22
+ ErrorType["VALIDATION_ERROR"] = "VALIDATION_ERROR";
23
+ ErrorType["AUTHENTICATION_ERROR"] = "AUTHENTICATION_ERROR";
24
+ ErrorType["AUTHORIZATION_ERROR"] = "AUTHORIZATION_ERROR";
25
+ ErrorType["NOT_FOUND_ERROR"] = "NOT_FOUND_ERROR";
26
+ ErrorType["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
27
+ })(ErrorType || (exports.ErrorType = ErrorType = {}));
28
+ /**
29
+ * Error severity levels
30
+ */
31
+ var ErrorSeverity;
32
+ (function (ErrorSeverity) {
33
+ ErrorSeverity["LOW"] = "LOW";
34
+ ErrorSeverity["MEDIUM"] = "MEDIUM";
35
+ ErrorSeverity["HIGH"] = "HIGH";
36
+ ErrorSeverity["CRITICAL"] = "CRITICAL";
37
+ })(ErrorSeverity || (exports.ErrorSeverity = ErrorSeverity = {}));
38
+ /**
39
+ * Enhanced SDK Error with additional metadata
40
+ */
41
+ class EnhancedSDKError extends serviceSDK_1.SDKError {
42
+ constructor(message, type, originalError, severity = ErrorSeverity.MEDIUM, context, retryable = false) {
43
+ super(message, type, originalError);
44
+ this.severity = severity;
45
+ this.timestamp = new Date();
46
+ this.context = context;
47
+ this.retryable = retryable;
48
+ }
49
+ }
50
+ exports.EnhancedSDKError = EnhancedSDKError;
51
+ /**
52
+ * Error handler utility class
53
+ */
54
+ class ErrorHandler {
55
+ /**
56
+ * Create a standardized error from various error sources
57
+ */
58
+ static createError(error, context) {
59
+ var _a;
60
+ // Handle GraphQL errors
61
+ if (error.graphQLErrors && error.graphQLErrors.length > 0) {
62
+ const message = error.graphQLErrors.map((err) => err.message).join(', ');
63
+ return new EnhancedSDKError(message, ErrorType.GRAPHQL_ERROR, error, this.determineSeverity(error), context, this.isRetryable(error));
64
+ }
65
+ // Handle network errors
66
+ if (error.networkError) {
67
+ return new EnhancedSDKError(`Network Error: ${error.networkError.message}`, ErrorType.NETWORK_ERROR, error, ErrorSeverity.HIGH, context, true // Network errors are usually retryable
68
+ );
69
+ }
70
+ // Handle Axios errors (REST API)
71
+ if (error.response) {
72
+ const status = error.response.status;
73
+ let errorType = ErrorType.REST_API_ERROR;
74
+ let severity = ErrorSeverity.MEDIUM;
75
+ let retryable = false;
76
+ // Categorize by HTTP status code
77
+ if (status === 401) {
78
+ errorType = ErrorType.AUTHENTICATION_ERROR;
79
+ severity = ErrorSeverity.HIGH;
80
+ }
81
+ else if (status === 403) {
82
+ errorType = ErrorType.AUTHORIZATION_ERROR;
83
+ severity = ErrorSeverity.HIGH;
84
+ }
85
+ else if (status === 404) {
86
+ errorType = ErrorType.NOT_FOUND_ERROR;
87
+ severity = ErrorSeverity.LOW;
88
+ }
89
+ else if (status >= 500) {
90
+ severity = ErrorSeverity.HIGH;
91
+ retryable = true;
92
+ }
93
+ else if (status === 429) {
94
+ retryable = true;
95
+ }
96
+ return new EnhancedSDKError(`API Error (${status}): ${((_a = error.response.data) === null || _a === void 0 ? void 0 : _a.message) || error.message}`, errorType, error, severity, Object.assign(Object.assign({}, context), { statusCode: status }), retryable);
97
+ }
98
+ // Handle validation errors
99
+ if (error.name === 'ValidationError') {
100
+ return new EnhancedSDKError(error.message, ErrorType.VALIDATION_ERROR, error, ErrorSeverity.LOW, context, false);
101
+ }
102
+ // Default unknown error
103
+ return new EnhancedSDKError(error.message || 'An unknown error occurred', ErrorType.UNKNOWN_ERROR, error, ErrorSeverity.MEDIUM, context, false);
104
+ }
105
+ /**
106
+ * Determine error severity based on error characteristics
107
+ */
108
+ static determineSeverity(error) {
109
+ var _a;
110
+ if (error.networkError)
111
+ return ErrorSeverity.HIGH;
112
+ if ((_a = error.graphQLErrors) === null || _a === void 0 ? void 0 : _a.some((e) => { var _a; return ((_a = e.extensions) === null || _a === void 0 ? void 0 : _a.code) === 'INTERNAL_ERROR'; })) {
113
+ return ErrorSeverity.CRITICAL;
114
+ }
115
+ return ErrorSeverity.MEDIUM;
116
+ }
117
+ /**
118
+ * Determine if an error is retryable
119
+ */
120
+ static isRetryable(error) {
121
+ var _a;
122
+ // Network errors are usually retryable
123
+ if (error.networkError)
124
+ return true;
125
+ // Some GraphQL errors are retryable
126
+ if ((_a = error.graphQLErrors) === null || _a === void 0 ? void 0 : _a.some((e) => {
127
+ var _a, _b;
128
+ return ((_a = e.extensions) === null || _a === void 0 ? void 0 : _a.code) === 'TIMEOUT' ||
129
+ ((_b = e.extensions) === null || _b === void 0 ? void 0 : _b.code) === 'RATE_LIMITED';
130
+ })) {
131
+ return true;
132
+ }
133
+ return false;
134
+ }
135
+ /**
136
+ * Log error with appropriate level
137
+ */
138
+ static logError(error, operation) {
139
+ const logData = {
140
+ operation,
141
+ type: error.type,
142
+ severity: error.severity,
143
+ message: error.message,
144
+ timestamp: error.timestamp,
145
+ context: error.context,
146
+ retryable: error.retryable
147
+ };
148
+ switch (error.severity) {
149
+ case ErrorSeverity.CRITICAL:
150
+ console.error('🚨 CRITICAL ERROR:', logData);
151
+ break;
152
+ case ErrorSeverity.HIGH:
153
+ console.error('❌ HIGH SEVERITY ERROR:', logData);
154
+ break;
155
+ case ErrorSeverity.MEDIUM:
156
+ console.warn('âš ī¸ MEDIUM SEVERITY ERROR:', logData);
157
+ break;
158
+ case ErrorSeverity.LOW:
159
+ console.info('â„šī¸ LOW SEVERITY ERROR:', logData);
160
+ break;
161
+ }
162
+ }
163
+ /**
164
+ * Check if error should trigger retry logic
165
+ */
166
+ static shouldRetry(error, attemptCount, maxRetries = 3) {
167
+ return error.retryable && attemptCount < maxRetries;
168
+ }
169
+ }
170
+ exports.ErrorHandler = ErrorHandler;
171
+ /**
172
+ * Retry utility with exponential backoff
173
+ */
174
+ class RetryManager {
175
+ static withExponentialBackoff(operation_1) {
176
+ return __awaiter(this, arguments, void 0, function* (operation, maxRetries = 3, baseDelay = 1000) {
177
+ let lastError;
178
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
179
+ try {
180
+ return yield operation();
181
+ }
182
+ catch (error) {
183
+ lastError = error;
184
+ const enhancedError = ErrorHandler.createError(error);
185
+ if (attempt === maxRetries || !ErrorHandler.shouldRetry(enhancedError, attempt, maxRetries)) {
186
+ throw enhancedError;
187
+ }
188
+ // Exponential backoff with jitter
189
+ const delay = baseDelay * Math.pow(2, attempt) + Math.random() * 1000;
190
+ yield new Promise(resolve => setTimeout(resolve, delay));
191
+ }
192
+ }
193
+ throw ErrorHandler.createError(lastError);
194
+ });
195
+ }
196
+ }
197
+ exports.RetryManager = RetryManager;
package/package.json CHANGED
@@ -1,44 +1,44 @@
1
- {
2
- "name": "@longvansoftware/storefront-js-client",
3
- "version": "3.1.5",
4
- "main": "dist/src/index.js",
5
- "types": "dist/src/index.d.ts",
6
- "files": [
7
- "dist/**/*.d.ts",
8
- "dist/**/*.js"
9
- ],
10
- "directories": {
11
- "test": "jest"
12
- },
13
- "scripts": {
14
- "test": "jest",
15
- "build": "tsc",
16
- "publish": "npm run build && npm publish"
17
- },
18
- "keywords": [],
19
- "author": "",
20
- "license": "ISC",
21
- "dependencies": {
22
- "@apollo/client": "3.9.11",
23
- "apollo-boost": "^0.4.9",
24
- "axios": "^1.6.8",
25
- "cross-fetch": "^4.0.0",
26
- "crypto-js": "^4.2.0",
27
- "graphql": "^15.8.0",
28
- "graphql-request": "^6.1.0",
29
- "graphql-tag": "^2.12.6",
30
- "react": "^18.2.0",
31
- "ts-node": "^10.9.2"
32
- },
33
- "devDependencies": {
34
- "@types/axios": "^0.14.0",
35
- "@types/crypto-js": "^4.2.2",
36
- "@types/jest": "^29.5.12",
37
- "@types/node": "^20.12.7",
38
- "jest": "^29.7.0",
39
- "ts-jest": "^29.1.2",
40
- "typescript": "^5.4.5"
41
- },
42
- "description": "",
43
- "packageManager": "yarn@4.7.0+sha512.5a0afa1d4c1d844b3447ee3319633797bcd6385d9a44be07993ae52ff4facabccafb4af5dcd1c2f9a94ac113e5e9ff56f6130431905884414229e284e37bb7c9"
44
- }
1
+ {
2
+ "name": "@longvansoftware/storefront-js-client",
3
+ "version": "3.1.6",
4
+ "main": "dist/src/index.js",
5
+ "types": "dist/src/index.d.ts",
6
+ "files": [
7
+ "dist/**/*.d.ts",
8
+ "dist/**/*.js"
9
+ ],
10
+ "directories": {
11
+ "test": "jest"
12
+ },
13
+ "scripts": {
14
+ "test": "jest",
15
+ "build": "tsc",
16
+ "publish": "npm run build && npm publish"
17
+ },
18
+ "keywords": [],
19
+ "author": "",
20
+ "license": "ISC",
21
+ "dependencies": {
22
+ "@apollo/client": "3.9.11",
23
+ "apollo-boost": "^0.4.9",
24
+ "axios": "^1.6.8",
25
+ "cross-fetch": "^4.0.0",
26
+ "crypto-js": "^4.2.0",
27
+ "graphql": "^15.8.0",
28
+ "graphql-request": "^6.1.0",
29
+ "graphql-tag": "^2.12.6",
30
+ "react": "^18.2.0",
31
+ "ts-node": "^10.9.2"
32
+ },
33
+ "devDependencies": {
34
+ "@types/axios": "^0.14.0",
35
+ "@types/crypto-js": "^4.2.2",
36
+ "@types/jest": "^29.5.12",
37
+ "@types/node": "^20.12.7",
38
+ "jest": "^29.7.0",
39
+ "ts-jest": "^29.1.2",
40
+ "typescript": "^5.4.5"
41
+ },
42
+ "description": "",
43
+ "packageManager": "yarn@4.7.0+sha512.5a0afa1d4c1d844b3447ee3319633797bcd6385d9a44be07993ae52ff4facabccafb4af5dcd1c2f9a94ac113e5e9ff56f6130431905884414229e284e37bb7c9"
44
+ }