@smartsheet-extensions/handler 1.1.6-beta.1 → 1.1.6-beta.2
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleBigPayLoad.d.ts","sourceRoot":"","sources":["../../src/enhancers/handleBigPayLoad.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,WAAW,CAAC;AAKjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAgBtD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;
|
|
1
|
+
{"version":3,"file":"handleBigPayLoad.d.ts","sourceRoot":"","sources":["../../src/enhancers/handleBigPayLoad.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,WAAW,CAAC;AAKjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAgBtD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AA0UD,eAAO,MAAM,gBAAgB,sHAa5B,CAAC"}
|
|
@@ -45,25 +45,92 @@ const xorHandler_1 = require("./xorHandler");
|
|
|
45
45
|
// Create a custom https agent with keepAlive enabled for stable connections during large uploads
|
|
46
46
|
const httpsAgent = new https.Agent({
|
|
47
47
|
keepAlive: true,
|
|
48
|
-
keepAliveMsecs:
|
|
48
|
+
keepAliveMsecs: 300000,
|
|
49
|
+
maxSockets: 50,
|
|
50
|
+
maxFreeSockets: 10,
|
|
51
|
+
timeout: 300000,
|
|
49
52
|
});
|
|
50
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Helper function to determine if an error is retryable
|
|
55
|
+
*/
|
|
56
|
+
const isRetryableError = (error) => {
|
|
57
|
+
var _a, _b, _c, _d;
|
|
58
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
59
|
+
// Retry network errors
|
|
60
|
+
if (error.code === 'ECONNRESET' ||
|
|
61
|
+
error.code === 'ETIMEDOUT' ||
|
|
62
|
+
error.code === 'ECONNABORTED' ||
|
|
63
|
+
error.code === 'EPIPE' ||
|
|
64
|
+
error.code === 'ENOTFOUND' ||
|
|
65
|
+
error.code === 'ESOCKETTIMEDOUT') {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
// Retry 5xx server errors and 429 rate limiting
|
|
69
|
+
if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) >= 500 || ((_b = error.response) === null || _b === void 0 ? void 0 : _b.status) === 429) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
// Don't retry 4xx client errors
|
|
73
|
+
if (((_c = error.response) === null || _c === void 0 ? void 0 : _c.status) >= 400 && ((_d = error.response) === null || _d === void 0 ? void 0 : _d.status) < 500) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return true; // Retry unknown errors
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Helper function to extract detailed error information for logging
|
|
81
|
+
*/
|
|
82
|
+
const getErrorDetails = (error) => {
|
|
83
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
84
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
85
|
+
return {
|
|
86
|
+
code: error.code,
|
|
87
|
+
message: error.message,
|
|
88
|
+
statusCode: (_a = error.response) === null || _a === void 0 ? void 0 : _a.status,
|
|
89
|
+
statusText: (_b = error.response) === null || _b === void 0 ? void 0 : _b.statusText,
|
|
90
|
+
responseData: (_c = error.response) === null || _c === void 0 ? void 0 : _c.data,
|
|
91
|
+
requestUrl: (_e = (_d = error.config) === null || _d === void 0 ? void 0 : _d.url) === null || _e === void 0 ? void 0 : _e.substring(0, 100),
|
|
92
|
+
requestMethod: (_f = error.config) === null || _f === void 0 ? void 0 : _f.method,
|
|
93
|
+
requestTimeout: (_g = error.config) === null || _g === void 0 ? void 0 : _g.timeout,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
message: (error === null || error === void 0 ? void 0 : error.message) || String(error),
|
|
98
|
+
stack: error === null || error === void 0 ? void 0 : error.stack,
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
const retryWrapper = (func, retryTimes, operationType = 'POST') => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
102
|
for (let counter = retryTimes - 1; counter >= 0; counter -= 1) {
|
|
103
|
+
const attemptNumber = retryTimes - counter;
|
|
104
|
+
const startTime = Date.now();
|
|
52
105
|
try {
|
|
53
106
|
// eslint-disable-next-line no-await-in-loop
|
|
54
107
|
const resp = yield func();
|
|
108
|
+
const duration = Date.now() - startTime;
|
|
109
|
+
// eslint-disable-next-line no-console
|
|
110
|
+
console.log(`S3 ${operationType} succeeded in ${duration}ms on attempt ${attemptNumber}/${retryTimes}`);
|
|
55
111
|
return resp.data;
|
|
56
112
|
}
|
|
57
113
|
catch (error) {
|
|
58
|
-
|
|
114
|
+
const duration = Date.now() - startTime;
|
|
115
|
+
const isRetryable = isRetryableError(error);
|
|
116
|
+
const errorDetails = getErrorDetails(error);
|
|
117
|
+
// eslint-disable-next-line no-console
|
|
118
|
+
console.error(`S3 ${operationType} failed after ${duration}ms on attempt ${attemptNumber}/${retryTimes}:`, Object.assign(Object.assign({}, errorDetails), { isRetryable, retriesRemaining: counter }));
|
|
119
|
+
if (counter === 0 || !isRetryable) {
|
|
120
|
+
// eslint-disable-next-line no-console
|
|
121
|
+
console.error(`S3 ${operationType} exhausted all retries or encountered non-retryable error`);
|
|
59
122
|
throw error;
|
|
60
123
|
}
|
|
124
|
+
// Exponential backoff with jitter
|
|
125
|
+
const baseDelay = constants_1.S3_REQUEST_DELAY_MS * Math.pow(2, (attemptNumber - 1));
|
|
126
|
+
const maxDelay = 30000; // 30 seconds max
|
|
127
|
+
const jitter = 0.5 + Math.random() * 0.5;
|
|
128
|
+
const delay = Math.min(baseDelay * jitter, maxDelay);
|
|
61
129
|
// eslint-disable-next-line no-console
|
|
62
|
-
console.
|
|
63
|
-
console.warn(`Request to s3 failed. Retry attempts remaining ${counter} (of ${retryTimes})`);
|
|
130
|
+
console.warn(`Retrying S3 ${operationType} in ${Math.round(delay)}ms (${counter} attempts remaining)`);
|
|
64
131
|
// eslint-disable-next-line no-await-in-loop
|
|
65
132
|
yield new Promise(resolve => {
|
|
66
|
-
setTimeout(resolve,
|
|
133
|
+
setTimeout(resolve, delay);
|
|
67
134
|
});
|
|
68
135
|
}
|
|
69
136
|
}
|
|
@@ -72,7 +139,9 @@ const getPayloadFromS3 = (url) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
72
139
|
const config = {
|
|
73
140
|
timeout: constants_1.S3_REQUEST_TIMEOUT_MS,
|
|
74
141
|
};
|
|
75
|
-
|
|
142
|
+
// eslint-disable-next-line no-console
|
|
143
|
+
console.log(`Fetching payload from S3...`);
|
|
144
|
+
const resp = yield retryWrapper(() => __awaiter(void 0, void 0, void 0, function* () { return axios_1.default.get(url, config); }), constants_1.S3_GET_RETRY_LIMIT, 'GET');
|
|
76
145
|
return resp;
|
|
77
146
|
});
|
|
78
147
|
const preparePostData = (urlObj, payload) => {
|
|
@@ -95,26 +164,37 @@ const postPayloadToS3 = (url, result) => __awaiter(void 0, void 0, void 0, funct
|
|
|
95
164
|
const resp = yield retryWrapper(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
96
165
|
const urlObj = new URL(decodeURI(url));
|
|
97
166
|
const data = preparePostData(urlObj, result);
|
|
167
|
+
// Calculate Content-Length once to avoid consuming FormData stream
|
|
98
168
|
const payloadSize = data.getLengthSync();
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
169
|
+
// Timeout set to 5 minutes which is max lambda execution time
|
|
170
|
+
const timeout = 300000;
|
|
171
|
+
let urlParamsCount = 0;
|
|
172
|
+
urlObj.searchParams.forEach(() => {
|
|
173
|
+
urlParamsCount += 1;
|
|
174
|
+
});
|
|
175
|
+
// eslint-disable-next-line no-console
|
|
176
|
+
console.log(`Uploading payload to S3:`, {
|
|
177
|
+
size: `${payloadSize} bytes (${Math.round(payloadSize / 1024)} KB)`,
|
|
178
|
+
timeout: `${Math.round(timeout / 1000)} seconds`,
|
|
179
|
+
urlHost: urlObj.hostname,
|
|
180
|
+
formDataFields: urlParamsCount + 1,
|
|
181
|
+
});
|
|
105
182
|
const config = {
|
|
106
183
|
headers: {
|
|
107
184
|
'Content-Type': 'multipart/form-data',
|
|
108
|
-
'Content-Length':
|
|
185
|
+
'Content-Length': payloadSize,
|
|
109
186
|
},
|
|
110
187
|
maxContentLength: Infinity,
|
|
111
188
|
maxBodyLength: Infinity,
|
|
112
|
-
timeout
|
|
189
|
+
timeout,
|
|
113
190
|
httpsAgent,
|
|
191
|
+
maxRedirects: 0,
|
|
192
|
+
decompress: false,
|
|
193
|
+
validateStatus: status => status >= 200 && status < 300,
|
|
114
194
|
};
|
|
115
195
|
const postUrl = preparePostUrl(urlObj);
|
|
116
196
|
return axios_1.default.post(postUrl, data, config);
|
|
117
|
-
}), constants_1.S3_POST_RETRY_LIMIT);
|
|
197
|
+
}), constants_1.S3_POST_RETRY_LIMIT, 'POST');
|
|
118
198
|
return resp;
|
|
119
199
|
});
|
|
120
200
|
const isS3Execution = (payload) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleBigPayLoad.js","sourceRoot":"","sources":["../../src/enhancers/handleBigPayLoad.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAiE;AACjE,0DAAiC;AACjC,6CAA+B;AAC/B,mEAAgE;AAChE,+EAA4E;AAC5E,iEAA8D;AAE9D,oEAGuC;AACvC,kDAO4B;AAC5B,4DAAyD;AACzD,6CAA0C;AAO1C,iGAAiG;AACjG,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;IACjC,SAAS,EAAE,IAAI;IACf,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"handleBigPayLoad.js","sourceRoot":"","sources":["../../src/enhancers/handleBigPayLoad.ts"],"names":[],"mappings":"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"}
|