@crawlee/utils 3.9.3-beta.5 → 3.9.3-beta.50

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,44 +0,0 @@
1
- /**
2
- * Node.js Error interface
3
- */
4
- interface ErrnoException extends Error {
5
- errno?: number | undefined;
6
- code?: string | number | undefined;
7
- path?: string | undefined;
8
- syscall?: string | undefined;
9
- cause?: any;
10
- }
11
- export interface ErrorTrackerOptions {
12
- showErrorCode: boolean;
13
- showErrorName: boolean;
14
- showStackTrace: boolean;
15
- showFullStack: boolean;
16
- showErrorMessage: boolean;
17
- showFullMessage: boolean;
18
- }
19
- /**
20
- * This class tracks errors and computes a summary of information like:
21
- * - where the errors happened
22
- * - what the error names are
23
- * - what the error codes are
24
- * - what is the general error message
25
- *
26
- * This is extremely useful when there are dynamic error messages, such as argument validation.
27
- *
28
- * Since the structure of the `tracker.result` object differs when using different options,
29
- * it's typed as `Record<string, unknown>`. The most deep object has a `count` property, which is a number.
30
- *
31
- * It's possible to get the total amount of errors via the `tracker.total` property.
32
- */
33
- export declare class ErrorTracker {
34
- #private;
35
- result: Record<string, unknown>;
36
- total: number;
37
- constructor(options?: Partial<ErrorTrackerOptions>);
38
- add(error: ErrnoException): void;
39
- getUniqueErrorCount(): number;
40
- getMostPopularErrors(count: number): [number, string[]][];
41
- reset(): void;
42
- }
43
- export {};
44
- //# sourceMappingURL=error_tracker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error_tracker.d.ts","sourceRoot":"","sources":["../../src/internals/error_tracker.ts"],"names":[],"mappings":"AAEA;;GAEG;AACF,UAAU,cAAe,SAAQ,KAAK;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;CAC5B;AAoPD;;;;;;;;;;;;;GAaG;AACH,qBAAa,YAAY;;IAGrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEhC,KAAK,EAAE,MAAM,CAAC;gBAEF,OAAO,GAAE,OAAO,CAAC,mBAAmB,CAAM;IAetD,GAAG,CAAC,KAAK,EAAE,cAAc;IA4BzB,mBAAmB;IAoBnB,oBAAoB,CAAC,KAAK,EAAE,MAAM;IAoBlC,KAAK;CAOR"}
@@ -1,285 +0,0 @@
1
- "use strict";
2
- var _ErrorTracker_options;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ErrorTracker = void 0;
5
- const tslib_1 = require("tslib");
6
- const node_util_1 = require("node:util");
7
- const extractPathFromStackTraceLine = (line) => {
8
- const lastStartingRoundBracketIndex = line.lastIndexOf('(');
9
- if (lastStartingRoundBracketIndex !== -1) {
10
- const closingRoundBracketIndex = line.indexOf(')', lastStartingRoundBracketIndex);
11
- if (closingRoundBracketIndex !== -1) {
12
- return line.slice(lastStartingRoundBracketIndex + 1, closingRoundBracketIndex);
13
- }
14
- }
15
- return line;
16
- };
17
- // https://v8.dev/docs/stack-trace-api#appendix%3A-stack-trace-format
18
- const getPathFromStackTrace = (stack) => {
19
- for (const line of stack) {
20
- const path = extractPathFromStackTraceLine(line);
21
- if (path.startsWith('node:')
22
- || path.includes('/node_modules/')
23
- || path.includes('\\node_modules\\')) {
24
- continue;
25
- }
26
- return path;
27
- }
28
- return extractPathFromStackTraceLine(stack[0]);
29
- };
30
- const getStackTraceGroup = (error, storage, showFullStack) => {
31
- const stack = error.stack?.split('\n').map((line) => line.trim());
32
- let sliceAt = -1;
33
- if (stack) {
34
- for (let i = 0; i < stack.length; i++) {
35
- if (stack[i].startsWith('at ') || stack[i].startsWith('eval at ')) {
36
- sliceAt = i;
37
- break;
38
- }
39
- }
40
- }
41
- let normalizedStackTrace = null;
42
- if (sliceAt !== -1) {
43
- normalizedStackTrace = showFullStack ? stack.slice(sliceAt).map((x) => x.trim()).join('\n') : getPathFromStackTrace(stack.slice(sliceAt));
44
- }
45
- if (!normalizedStackTrace) {
46
- normalizedStackTrace = 'missing stack trace';
47
- }
48
- if (!(normalizedStackTrace in storage)) {
49
- storage[normalizedStackTrace] = Object.create(null);
50
- }
51
- return storage[normalizedStackTrace];
52
- };
53
- const getErrorCodeGroup = (error, storage) => {
54
- let { code } = error;
55
- if (code === undefined) {
56
- code = 'missing error code';
57
- }
58
- if (!(code in storage)) {
59
- storage[code] = Object.create(null);
60
- }
61
- return storage[String(code)];
62
- };
63
- const getErrorNameGroup = (error, storage) => {
64
- const { name } = error;
65
- if (!(name in storage)) {
66
- storage[name] = Object.create(null);
67
- }
68
- return storage[name];
69
- };
70
- const findBiggestWordIntersection = (a, b) => {
71
- let maxStreak = 0;
72
- let bStreakIndex = -1;
73
- let aStreakIndex = -1;
74
- for (let aIndex = 0; aIndex < a.length; aIndex++) {
75
- let bIndex = -1;
76
- do {
77
- let aWalkIndex = aIndex;
78
- bIndex = b.indexOf(a[aIndex], bIndex + 1);
79
- let bWalkIndex = bIndex;
80
- let streak = 0;
81
- while (aWalkIndex < a.length && bWalkIndex < b.length && b[bWalkIndex++] === a[aWalkIndex++]) {
82
- streak++;
83
- }
84
- if (streak > maxStreak) {
85
- maxStreak = streak;
86
- aStreakIndex = aIndex;
87
- bStreakIndex = bIndex;
88
- }
89
- } while (bIndex !== -1);
90
- }
91
- return {
92
- maxStreak,
93
- aStreakIndex,
94
- bStreakIndex,
95
- };
96
- };
97
- const arrayCount = (array, target) => {
98
- let result = 0;
99
- for (const item of array) {
100
- if (item === target) {
101
- result++;
102
- }
103
- }
104
- return result;
105
- };
106
- const calculatePlaceholder = (a, b) => {
107
- const { maxStreak, aStreakIndex, bStreakIndex } = findBiggestWordIntersection(a, b);
108
- if (maxStreak === 0) {
109
- return ['_'];
110
- }
111
- const leftA = a.slice(0, aStreakIndex);
112
- const leftB = b.slice(0, bStreakIndex);
113
- const rightA = a.slice(aStreakIndex + maxStreak);
114
- const rightB = b.slice(bStreakIndex + maxStreak);
115
- const output = [];
116
- if (leftA.length !== 0 || leftB.length !== 0) {
117
- output.push(...calculatePlaceholder(leftA, leftB));
118
- }
119
- output.push(...a.slice(aStreakIndex, aStreakIndex + maxStreak));
120
- if (rightA.length !== 0 || rightB.length !== 0) {
121
- output.push(...calculatePlaceholder(rightA, rightB));
122
- }
123
- return output;
124
- };
125
- const normalizedCalculatePlaceholder = (a, b) => {
126
- const output = calculatePlaceholder(a, b);
127
- // We can't be too general
128
- if ((arrayCount(output, '_') / output.length) >= 0.5) {
129
- return ['_'];
130
- }
131
- return output;
132
- };
133
- // Merge A (missing placeholders) into B (can contain placeholders but does not have to)
134
- const mergeMessages = (a, b, storage) => {
135
- const placeholder = normalizedCalculatePlaceholder(a.split(' '), b.split(' ')).join(' ');
136
- if (placeholder === '_') {
137
- return undefined;
138
- }
139
- const count = storage[a].count + storage[b].count;
140
- delete storage[a];
141
- delete storage[b];
142
- storage[placeholder] = Object.assign(Object.create(null), {
143
- count,
144
- });
145
- return placeholder;
146
- };
147
- const getErrorMessageGroup = (error, storage, showFullMessage) => {
148
- let { message } = error;
149
- if (!message) {
150
- try {
151
- message = typeof error === 'string' ? error : `Unknown error message. Received non-error object: ${JSON.stringify(error)}`;
152
- }
153
- catch {
154
- message = `Unknown error message. Received non-error object, and could not stringify it: ${(0, node_util_1.inspect)(error, { depth: 0 })}`;
155
- }
156
- }
157
- if (!showFullMessage) {
158
- const newLineIndex = message.indexOf('\n');
159
- message = message.slice(0, newLineIndex === -1 ? undefined : newLineIndex);
160
- }
161
- if (!(message in storage)) {
162
- storage[message] = Object.assign(Object.create(null), {
163
- count: 0,
164
- });
165
- // This actually safe, since we Object.create(null) so no prototype pollution can happen.
166
- // eslint-disable-next-line no-restricted-syntax, guard-for-in
167
- for (const existingMessage in storage) {
168
- const newMessage = mergeMessages(message, existingMessage, storage);
169
- if (newMessage) {
170
- message = newMessage;
171
- break;
172
- }
173
- }
174
- }
175
- return storage[message];
176
- };
177
- const increaseCount = (group) => {
178
- if (!('count' in group)) {
179
- // In case users don't want to display error message
180
- group.count = 0;
181
- }
182
- group.count++;
183
- };
184
- /**
185
- * This class tracks errors and computes a summary of information like:
186
- * - where the errors happened
187
- * - what the error names are
188
- * - what the error codes are
189
- * - what is the general error message
190
- *
191
- * This is extremely useful when there are dynamic error messages, such as argument validation.
192
- *
193
- * Since the structure of the `tracker.result` object differs when using different options,
194
- * it's typed as `Record<string, unknown>`. The most deep object has a `count` property, which is a number.
195
- *
196
- * It's possible to get the total amount of errors via the `tracker.total` property.
197
- */
198
- class ErrorTracker {
199
- constructor(options = {}) {
200
- _ErrorTracker_options.set(this, void 0);
201
- Object.defineProperty(this, "result", {
202
- enumerable: true,
203
- configurable: true,
204
- writable: true,
205
- value: void 0
206
- });
207
- Object.defineProperty(this, "total", {
208
- enumerable: true,
209
- configurable: true,
210
- writable: true,
211
- value: void 0
212
- });
213
- tslib_1.__classPrivateFieldSet(this, _ErrorTracker_options, {
214
- showErrorCode: true,
215
- showErrorName: true,
216
- showStackTrace: true,
217
- showFullStack: false,
218
- showErrorMessage: true,
219
- showFullMessage: false,
220
- ...options,
221
- }, "f");
222
- this.result = Object.create(null);
223
- this.total = 0;
224
- }
225
- add(error) {
226
- this.total++;
227
- let group = this.result;
228
- if (tslib_1.__classPrivateFieldGet(this, _ErrorTracker_options, "f").showStackTrace) {
229
- group = getStackTraceGroup(error, group, tslib_1.__classPrivateFieldGet(this, _ErrorTracker_options, "f").showFullStack);
230
- }
231
- if (tslib_1.__classPrivateFieldGet(this, _ErrorTracker_options, "f").showErrorCode) {
232
- group = getErrorCodeGroup(error, group);
233
- }
234
- if (tslib_1.__classPrivateFieldGet(this, _ErrorTracker_options, "f").showErrorName) {
235
- group = getErrorNameGroup(error, group);
236
- }
237
- if (tslib_1.__classPrivateFieldGet(this, _ErrorTracker_options, "f").showErrorMessage) {
238
- group = getErrorMessageGroup(error, group, tslib_1.__classPrivateFieldGet(this, _ErrorTracker_options, "f").showFullMessage);
239
- }
240
- increaseCount(group);
241
- if (typeof error.cause === 'object' && error.cause !== null) {
242
- this.add(error.cause);
243
- }
244
- }
245
- getUniqueErrorCount() {
246
- let count = 0;
247
- const goDeeper = (group) => {
248
- if ('count' in group) {
249
- count++;
250
- return;
251
- }
252
- // eslint-disable-next-line guard-for-in, no-restricted-syntax
253
- for (const key in group) {
254
- goDeeper(group[key]);
255
- }
256
- };
257
- goDeeper(this.result);
258
- return count;
259
- }
260
- getMostPopularErrors(count) {
261
- const result = [];
262
- const goDeeper = (group, path) => {
263
- if ('count' in group) {
264
- result.push([group.count, path]);
265
- return;
266
- }
267
- // eslint-disable-next-line guard-for-in, no-restricted-syntax
268
- for (const key in group) {
269
- goDeeper(group[key], [...path, key]);
270
- }
271
- };
272
- goDeeper(this.result, []);
273
- return result.sort((a, b) => b[0] - a[0]).slice(0, count);
274
- }
275
- reset() {
276
- // This actually safe, since we Object.create(null) so no prototype pollution can happen.
277
- // eslint-disable-next-line no-restricted-syntax, guard-for-in
278
- for (const key in this.result) {
279
- delete this.result[key];
280
- }
281
- }
282
- }
283
- exports.ErrorTracker = ErrorTracker;
284
- _ErrorTracker_options = new WeakMap();
285
- //# sourceMappingURL=error_tracker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error_tracker.js","sourceRoot":"","sources":["../../src/internals/error_tracker.ts"],"names":[],"mappings":"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"}