@postalsys/email-text-tools 1.4.0 → 1.4.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/.ncurc.js +0 -1
- package/lib/generate-summary.js +40 -24
- package/lib/risk-analysis.js +37 -24
- package/package.json +3 -3
package/.ncurc.js
CHANGED
package/lib/generate-summary.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
const packageData = require('../package.json');
|
|
4
4
|
const htmlToText = require('../lib/html-to-text');
|
|
5
|
-
const nodeFetch = require('node-fetch');
|
|
6
5
|
const GPT3Tokenizer = require('gpt3-tokenizer').default;
|
|
7
6
|
|
|
8
|
-
const fetchCmd
|
|
7
|
+
const { fetch: fetchCmd, Agent } = require('undici');
|
|
8
|
+
const fetchAgent = new Agent({ connect: { timeout: 90 * 1000 } });
|
|
9
9
|
|
|
10
10
|
const tokenizer = new GPT3Tokenizer({ type: 'gpt3' });
|
|
11
11
|
|
|
@@ -126,37 +126,50 @@ ${JSON.stringify(content)}`;
|
|
|
126
126
|
]
|
|
127
127
|
};
|
|
128
128
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
let
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
129
|
+
let res;
|
|
130
|
+
let data;
|
|
131
|
+
let retries = 0;
|
|
132
|
+
|
|
133
|
+
let run = async () => {
|
|
134
|
+
res = await fetchCmd(OPENAI_API_URL, {
|
|
135
|
+
method: 'post',
|
|
136
|
+
headers,
|
|
137
|
+
body: JSON.stringify(payload),
|
|
138
|
+
dispatcher: fetchAgent
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
data = await res.json();
|
|
142
|
+
|
|
143
|
+
if (!res.ok) {
|
|
144
|
+
if (res.status === 429 && ++retries < 5) {
|
|
145
|
+
// try again
|
|
146
|
+
await new Promise(r => setTimeout(r, 1000));
|
|
147
|
+
return await run();
|
|
148
|
+
}
|
|
138
149
|
|
|
139
|
-
|
|
150
|
+
if (data && data.error) {
|
|
151
|
+
let error = new Error(data.error.message || data.error);
|
|
152
|
+
if (data.error.code) {
|
|
153
|
+
error.code = data.error.code;
|
|
154
|
+
}
|
|
140
155
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
let error = new Error(data.error.message || data.error);
|
|
144
|
-
if (data.error.code) {
|
|
145
|
-
error.code = data.error.code;
|
|
156
|
+
error.statusCode = res.status;
|
|
157
|
+
throw error;
|
|
146
158
|
}
|
|
147
159
|
|
|
160
|
+
let error = new Error('Failed to run API request');
|
|
148
161
|
error.statusCode = res.status;
|
|
149
162
|
throw error;
|
|
150
163
|
}
|
|
151
164
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
}
|
|
165
|
+
if (!data) {
|
|
166
|
+
throw new Error(`Failed to POST API request`);
|
|
167
|
+
}
|
|
168
|
+
};
|
|
156
169
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
170
|
+
const reqStartTime = Date.now();
|
|
171
|
+
await run();
|
|
172
|
+
const reqEndTime = Date.now();
|
|
160
173
|
|
|
161
174
|
let values;
|
|
162
175
|
const output =
|
|
@@ -176,6 +189,9 @@ ${JSON.stringify(content)}`;
|
|
|
176
189
|
if (typeof values.shouldReply === 'string') {
|
|
177
190
|
values.shouldReply = values.shouldReply === 'true';
|
|
178
191
|
}
|
|
192
|
+
if (typeof values.shouldReply !== 'undefined' && typeof values.shouldReply !== 'boolean') {
|
|
193
|
+
delete values.shouldReply;
|
|
194
|
+
}
|
|
179
195
|
} catch (err) {
|
|
180
196
|
let error = new Error('Failed to parse output from OpenAI API');
|
|
181
197
|
error.textContent = output;
|
package/lib/risk-analysis.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
const packageData = require('../package.json');
|
|
4
4
|
const htmlToText = require('../lib/html-to-text');
|
|
5
|
-
const nodeFetch = require('node-fetch');
|
|
6
5
|
const GPT3Tokenizer = require('gpt3-tokenizer').default;
|
|
7
6
|
|
|
8
|
-
const fetchCmd
|
|
7
|
+
const { fetch: fetchCmd, Agent } = require('undici');
|
|
8
|
+
const fetchAgent = new Agent({ connect: { timeout: 90 * 1000 } });
|
|
9
9
|
|
|
10
10
|
const tokenizer = new GPT3Tokenizer({ type: 'gpt3' });
|
|
11
11
|
|
|
@@ -157,37 +157,50 @@ ${JSON.stringify(content)}`;
|
|
|
157
157
|
]
|
|
158
158
|
};
|
|
159
159
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
let
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
160
|
+
let res;
|
|
161
|
+
let data;
|
|
162
|
+
let retries = 0;
|
|
163
|
+
|
|
164
|
+
let run = async () => {
|
|
165
|
+
res = await fetchCmd(OPENAI_API_URL, {
|
|
166
|
+
method: 'post',
|
|
167
|
+
headers,
|
|
168
|
+
body: JSON.stringify(payload),
|
|
169
|
+
dispatcher: fetchAgent
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
data = await res.json();
|
|
173
|
+
|
|
174
|
+
if (!res.ok) {
|
|
175
|
+
if (res.status === 429 && ++retries < 5) {
|
|
176
|
+
// try again
|
|
177
|
+
await new Promise(r => setTimeout(r, 1000));
|
|
178
|
+
return await run();
|
|
179
|
+
}
|
|
169
180
|
|
|
170
|
-
|
|
181
|
+
if (data && data.error) {
|
|
182
|
+
let error = new Error(data.error.message || data.error);
|
|
183
|
+
if (data.error.code) {
|
|
184
|
+
error.code = data.error.code;
|
|
185
|
+
}
|
|
171
186
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
let error = new Error(data.error.message || data.error);
|
|
175
|
-
if (data.error.code) {
|
|
176
|
-
error.code = data.error.code;
|
|
187
|
+
error.statusCode = res.status;
|
|
188
|
+
throw error;
|
|
177
189
|
}
|
|
178
190
|
|
|
191
|
+
let error = new Error('Failed to run API request');
|
|
179
192
|
error.statusCode = res.status;
|
|
180
193
|
throw error;
|
|
181
194
|
}
|
|
182
195
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
196
|
+
if (!data) {
|
|
197
|
+
throw new Error(`Failed to POST API request`);
|
|
198
|
+
}
|
|
199
|
+
};
|
|
187
200
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
201
|
+
const reqStartTime = Date.now();
|
|
202
|
+
await run();
|
|
203
|
+
const reqEndTime = Date.now();
|
|
191
204
|
|
|
192
205
|
let values;
|
|
193
206
|
const output =
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@postalsys/email-text-tools",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "Email text tools",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"juice": "9.0.0",
|
|
34
34
|
"linkify-it": "4.0.1",
|
|
35
35
|
"moment-timezone": "0.5.43",
|
|
36
|
-
"node-fetch": "2.6.7",
|
|
37
36
|
"node-html-parser": "6.1.5",
|
|
38
|
-
"tlds": "1.238.0"
|
|
37
|
+
"tlds": "1.238.0",
|
|
38
|
+
"undici": "5.22.0"
|
|
39
39
|
}
|
|
40
40
|
}
|