@roomi-fields/notebooklm-mcp 1.3.5 → 1.5.0
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/README.md +93 -658
- package/dist/accounts/account-manager.d.ts +163 -0
- package/dist/accounts/account-manager.d.ts.map +1 -0
- package/dist/accounts/account-manager.js +614 -0
- package/dist/accounts/account-manager.js.map +1 -0
- package/dist/accounts/auto-login-manager.d.ts +62 -0
- package/dist/accounts/auto-login-manager.d.ts.map +1 -0
- package/dist/accounts/auto-login-manager.js +537 -0
- package/dist/accounts/auto-login-manager.js.map +1 -0
- package/dist/accounts/crypto.d.ts +45 -0
- package/dist/accounts/crypto.d.ts.map +1 -0
- package/dist/accounts/crypto.js +138 -0
- package/dist/accounts/crypto.js.map +1 -0
- package/dist/accounts/index.d.ts +14 -0
- package/dist/accounts/index.d.ts.map +1 -0
- package/dist/accounts/index.js +14 -0
- package/dist/accounts/index.js.map +1 -0
- package/dist/accounts/types.d.ts +103 -0
- package/dist/accounts/types.d.ts.map +1 -0
- package/dist/accounts/types.js +7 -0
- package/dist/accounts/types.js.map +1 -0
- package/dist/auth/auth-manager.d.ts +9 -2
- package/dist/auth/auth-manager.d.ts.map +1 -1
- package/dist/auth/auth-manager.js +60 -6
- package/dist/auth/auth-manager.js.map +1 -1
- package/dist/auto-discovery/auto-discovery.d.ts.map +1 -1
- package/dist/auto-discovery/auto-discovery.js +2 -1
- package/dist/auto-discovery/auto-discovery.js.map +1 -1
- package/dist/cli/accounts.d.ts +13 -0
- package/dist/cli/accounts.d.ts.map +1 -0
- package/dist/cli/accounts.js +195 -0
- package/dist/cli/accounts.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -0
- package/dist/config.js.map +1 -1
- package/dist/content/content-generator.d.ts +153 -0
- package/dist/content/content-generator.d.ts.map +1 -0
- package/dist/content/content-generator.js +637 -0
- package/dist/content/content-generator.js.map +1 -0
- package/dist/content/content-manager.d.ts +364 -0
- package/dist/content/content-manager.d.ts.map +1 -0
- package/dist/content/content-manager.js +3846 -0
- package/dist/content/content-manager.js.map +1 -0
- package/dist/content/content-templates.d.ts +183 -0
- package/dist/content/content-templates.d.ts.map +1 -0
- package/dist/content/content-templates.js +719 -0
- package/dist/content/content-templates.js.map +1 -0
- package/dist/content/index.d.ts +14 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +14 -0
- package/dist/content/index.js.map +1 -0
- package/dist/content/types.d.ts +285 -0
- package/dist/content/types.d.ts.map +1 -0
- package/dist/content/types.js +10 -0
- package/dist/content/types.js.map +1 -0
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/http-wrapper.d.ts +7 -0
- package/dist/http-wrapper.d.ts.map +1 -1
- package/dist/http-wrapper.js +449 -29
- package/dist/http-wrapper.js.map +1 -1
- package/dist/index.js +26 -2
- package/dist/index.js.map +1 -1
- package/dist/library/notebook-library.d.ts +4 -0
- package/dist/library/notebook-library.d.ts.map +1 -1
- package/dist/library/notebook-library.js +20 -3
- package/dist/library/notebook-library.js.map +1 -1
- package/dist/session/browser-session.d.ts +35 -8
- package/dist/session/browser-session.d.ts.map +1 -1
- package/dist/session/browser-session.js +242 -28
- package/dist/session/browser-session.js.map +1 -1
- package/dist/session/session-manager.d.ts +6 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +46 -14
- package/dist/session/session-manager.js.map +1 -1
- package/dist/session/shared-context-manager.d.ts +3 -3
- package/dist/session/shared-context-manager.d.ts.map +1 -1
- package/dist/session/shared-context-manager.js +8 -7
- package/dist/session/shared-context-manager.js.map +1 -1
- package/dist/stdio-http-proxy.d.ts +24 -0
- package/dist/stdio-http-proxy.d.ts.map +1 -0
- package/dist/stdio-http-proxy.js +592 -0
- package/dist/stdio-http-proxy.js.map +1 -0
- package/dist/tools/index.d.ts +106 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1028 -7
- package/dist/tools/index.js.map +1 -1
- package/dist/types.d.ts +81 -17
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/citation-extractor.d.ts +66 -0
- package/dist/utils/citation-extractor.d.ts.map +1 -0
- package/dist/utils/citation-extractor.js +492 -0
- package/dist/utils/citation-extractor.js.map +1 -0
- package/dist/utils/page-utils.d.ts +8 -0
- package/dist/utils/page-utils.d.ts.map +1 -1
- package/dist/utils/page-utils.js +112 -8
- package/dist/utils/page-utils.js.map +1 -1
- package/docs/ARCHITECTURE_MIGRATION_STUDY.md +894 -0
- package/docs/CHROME_PROFILE_LIMITATION.md +15 -1
- package/docs/MULTI_ACCOUNT_SYSTEM.md +304 -0
- package/package.json +10 -10
- package/dist/__tests__/cleanup-manager.test.d.ts +0 -2
- package/dist/__tests__/cleanup-manager.test.d.ts.map +0 -1
- package/dist/__tests__/cleanup-manager.test.js +0 -341
- package/dist/__tests__/cleanup-manager.test.js.map +0 -1
- package/dist/__tests__/config-parsing.test.d.ts +0 -2
- package/dist/__tests__/config-parsing.test.d.ts.map +0 -1
- package/dist/__tests__/config-parsing.test.js +0 -338
- package/dist/__tests__/config-parsing.test.js.map +0 -1
- package/dist/__tests__/config.test.d.ts +0 -2
- package/dist/__tests__/config.test.d.ts.map +0 -1
- package/dist/__tests__/config.test.js +0 -267
- package/dist/__tests__/config.test.js.map +0 -1
- package/dist/__tests__/errors.test.d.ts +0 -2
- package/dist/__tests__/errors.test.d.ts.map +0 -1
- package/dist/__tests__/errors.test.js +0 -166
- package/dist/__tests__/errors.test.js.map +0 -1
- package/dist/__tests__/logger.test.d.ts +0 -2
- package/dist/__tests__/logger.test.d.ts.map +0 -1
- package/dist/__tests__/logger.test.js +0 -324
- package/dist/__tests__/logger.test.js.map +0 -1
- package/dist/__tests__/page-utils.test.d.ts +0 -2
- package/dist/__tests__/page-utils.test.d.ts.map +0 -1
- package/dist/__tests__/page-utils.test.js +0 -349
- package/dist/__tests__/page-utils.test.js.map +0 -1
- package/dist/__tests__/setup-verification.test.d.ts +0 -2
- package/dist/__tests__/setup-verification.test.d.ts.map +0 -1
- package/dist/__tests__/setup-verification.test.js +0 -15
- package/dist/__tests__/setup-verification.test.js.map +0 -1
- package/dist/__tests__/stealth-utils.test.d.ts +0 -2
- package/dist/__tests__/stealth-utils.test.d.ts.map +0 -1
- package/dist/__tests__/stealth-utils.test.js +0 -413
- package/dist/__tests__/stealth-utils.test.js.map +0 -1
- package/dist/__tests__/types.test.d.ts +0 -2
- package/dist/__tests__/types.test.d.ts.map +0 -1
- package/dist/__tests__/types.test.js +0 -461
- package/dist/__tests__/types.test.js.map +0 -1
|
@@ -1,413 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach } from '@jest/globals';
|
|
2
|
-
import { sleep, randomInt, randomFloat, randomChar, gaussian, randomDelay, readingPause, } from '../utils/stealth-utils.js';
|
|
3
|
-
import { CONFIG } from '../config.js';
|
|
4
|
-
describe('Stealth Utils', () => {
|
|
5
|
-
describe('sleep', () => {
|
|
6
|
-
it('should sleep for specified milliseconds', async () => {
|
|
7
|
-
const start = Date.now();
|
|
8
|
-
await sleep(100);
|
|
9
|
-
const elapsed = Date.now() - start;
|
|
10
|
-
expect(elapsed).toBeGreaterThanOrEqual(95); // Allow small margin
|
|
11
|
-
expect(elapsed).toBeLessThan(150);
|
|
12
|
-
});
|
|
13
|
-
it('should sleep for 0ms', async () => {
|
|
14
|
-
const start = Date.now();
|
|
15
|
-
await sleep(0);
|
|
16
|
-
const elapsed = Date.now() - start;
|
|
17
|
-
expect(elapsed).toBeLessThan(50);
|
|
18
|
-
});
|
|
19
|
-
it('should return a promise', () => {
|
|
20
|
-
const result = sleep(10);
|
|
21
|
-
expect(result).toBeInstanceOf(Promise);
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
describe('randomInt', () => {
|
|
25
|
-
it('should generate integer within range', () => {
|
|
26
|
-
for (let i = 0; i < 100; i++) {
|
|
27
|
-
const result = randomInt(1, 10);
|
|
28
|
-
expect(result).toBeGreaterThanOrEqual(1);
|
|
29
|
-
expect(result).toBeLessThanOrEqual(10);
|
|
30
|
-
expect(Number.isInteger(result)).toBe(true);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
it('should handle single value range', () => {
|
|
34
|
-
const result = randomInt(5, 5);
|
|
35
|
-
expect(result).toBe(5);
|
|
36
|
-
});
|
|
37
|
-
it('should handle negative numbers', () => {
|
|
38
|
-
const result = randomInt(-10, -5);
|
|
39
|
-
expect(result).toBeGreaterThanOrEqual(-10);
|
|
40
|
-
expect(result).toBeLessThanOrEqual(-5);
|
|
41
|
-
});
|
|
42
|
-
it('should handle range crossing zero', () => {
|
|
43
|
-
const result = randomInt(-5, 5);
|
|
44
|
-
expect(result).toBeGreaterThanOrEqual(-5);
|
|
45
|
-
expect(result).toBeLessThanOrEqual(5);
|
|
46
|
-
});
|
|
47
|
-
it('should generate all values in range over many iterations', () => {
|
|
48
|
-
const values = new Set();
|
|
49
|
-
for (let i = 0; i < 1000; i++) {
|
|
50
|
-
values.add(randomInt(1, 5));
|
|
51
|
-
}
|
|
52
|
-
expect(values.size).toBeGreaterThanOrEqual(4); // Should hit most values
|
|
53
|
-
});
|
|
54
|
-
it('should return integer for large ranges', () => {
|
|
55
|
-
const result = randomInt(1, 1000000);
|
|
56
|
-
expect(Number.isInteger(result)).toBe(true);
|
|
57
|
-
expect(result).toBeGreaterThanOrEqual(1);
|
|
58
|
-
expect(result).toBeLessThanOrEqual(1000000);
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
describe('randomFloat', () => {
|
|
62
|
-
it('should generate float within range', () => {
|
|
63
|
-
for (let i = 0; i < 100; i++) {
|
|
64
|
-
const result = randomFloat(1.0, 10.0);
|
|
65
|
-
expect(result).toBeGreaterThanOrEqual(1.0);
|
|
66
|
-
expect(result).toBeLessThan(10.0);
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
it('should handle single value range', () => {
|
|
70
|
-
const result = randomFloat(5.0, 5.0);
|
|
71
|
-
expect(result).toBe(5.0);
|
|
72
|
-
});
|
|
73
|
-
it('should handle negative numbers', () => {
|
|
74
|
-
const result = randomFloat(-10.5, -5.5);
|
|
75
|
-
expect(result).toBeGreaterThanOrEqual(-10.5);
|
|
76
|
-
expect(result).toBeLessThan(-5.5);
|
|
77
|
-
});
|
|
78
|
-
it('should handle range crossing zero', () => {
|
|
79
|
-
const result = randomFloat(-5.5, 5.5);
|
|
80
|
-
expect(result).toBeGreaterThanOrEqual(-5.5);
|
|
81
|
-
expect(result).toBeLessThan(5.5);
|
|
82
|
-
});
|
|
83
|
-
it('should generate non-integer values', () => {
|
|
84
|
-
let hasNonInteger = false;
|
|
85
|
-
for (let i = 0; i < 100; i++) {
|
|
86
|
-
const result = randomFloat(1.0, 10.0);
|
|
87
|
-
if (!Number.isInteger(result)) {
|
|
88
|
-
hasNonInteger = true;
|
|
89
|
-
break;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
expect(hasNonInteger).toBe(true);
|
|
93
|
-
});
|
|
94
|
-
it('should have proper distribution', () => {
|
|
95
|
-
const values = [];
|
|
96
|
-
for (let i = 0; i < 1000; i++) {
|
|
97
|
-
values.push(randomFloat(0, 100));
|
|
98
|
-
}
|
|
99
|
-
const avg = values.reduce((a, b) => a + b, 0) / values.length;
|
|
100
|
-
expect(avg).toBeGreaterThan(40);
|
|
101
|
-
expect(avg).toBeLessThan(60);
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
describe('randomChar', () => {
|
|
105
|
-
it('should generate lowercase letter', () => {
|
|
106
|
-
const result = randomChar();
|
|
107
|
-
expect(result).toMatch(/^[a-z]$/);
|
|
108
|
-
expect(result.length).toBe(1);
|
|
109
|
-
});
|
|
110
|
-
it('should generate various letters over many iterations', () => {
|
|
111
|
-
const chars = new Set();
|
|
112
|
-
for (let i = 0; i < 1000; i++) {
|
|
113
|
-
chars.add(randomChar());
|
|
114
|
-
}
|
|
115
|
-
expect(chars.size).toBeGreaterThan(15); // Should hit most letters
|
|
116
|
-
});
|
|
117
|
-
it('should only generate valid characters', () => {
|
|
118
|
-
const validChars = 'qwertyuiopasdfghjklzxcvbnm';
|
|
119
|
-
for (let i = 0; i < 100; i++) {
|
|
120
|
-
const result = randomChar();
|
|
121
|
-
expect(validChars).toContain(result);
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
describe('gaussian', () => {
|
|
126
|
-
it('should generate number near mean', () => {
|
|
127
|
-
const values = [];
|
|
128
|
-
for (let i = 0; i < 1000; i++) {
|
|
129
|
-
values.push(gaussian(100, 10));
|
|
130
|
-
}
|
|
131
|
-
const avg = values.reduce((a, b) => a + b, 0) / values.length;
|
|
132
|
-
expect(avg).toBeGreaterThan(95);
|
|
133
|
-
expect(avg).toBeLessThan(105);
|
|
134
|
-
});
|
|
135
|
-
it('should respect standard deviation', () => {
|
|
136
|
-
const values = [];
|
|
137
|
-
for (let i = 0; i < 1000; i++) {
|
|
138
|
-
values.push(gaussian(0, 1));
|
|
139
|
-
}
|
|
140
|
-
// Most values should be within 3 standard deviations
|
|
141
|
-
const withinRange = values.filter((v) => Math.abs(v) <= 3).length;
|
|
142
|
-
expect(withinRange / values.length).toBeGreaterThan(0.95);
|
|
143
|
-
});
|
|
144
|
-
it('should handle zero standard deviation', () => {
|
|
145
|
-
const result = gaussian(50, 0);
|
|
146
|
-
expect(result).toBe(50);
|
|
147
|
-
});
|
|
148
|
-
it('should handle negative mean', () => {
|
|
149
|
-
const values = [];
|
|
150
|
-
for (let i = 0; i < 1000; i++) {
|
|
151
|
-
values.push(gaussian(-100, 10));
|
|
152
|
-
}
|
|
153
|
-
const avg = values.reduce((a, b) => a + b, 0) / values.length;
|
|
154
|
-
expect(avg).toBeGreaterThan(-105);
|
|
155
|
-
expect(avg).toBeLessThan(-95);
|
|
156
|
-
});
|
|
157
|
-
it('should generate different values', () => {
|
|
158
|
-
const values = new Set();
|
|
159
|
-
for (let i = 0; i < 100; i++) {
|
|
160
|
-
values.add(gaussian(0, 10));
|
|
161
|
-
}
|
|
162
|
-
expect(values.size).toBeGreaterThan(90); // Should be mostly unique
|
|
163
|
-
});
|
|
164
|
-
it('should have proper distribution shape', () => {
|
|
165
|
-
const values = [];
|
|
166
|
-
for (let i = 0; i < 10000; i++) {
|
|
167
|
-
values.push(gaussian(0, 1));
|
|
168
|
-
}
|
|
169
|
-
// Check that values closer to mean are more common
|
|
170
|
-
const nearMean = values.filter((v) => Math.abs(v) <= 0.5).length;
|
|
171
|
-
const farFromMean = values.filter((v) => Math.abs(v) > 2).length;
|
|
172
|
-
expect(nearMean).toBeGreaterThan(farFromMean);
|
|
173
|
-
});
|
|
174
|
-
});
|
|
175
|
-
describe('randomDelay', () => {
|
|
176
|
-
it('should delay within specified range', async () => {
|
|
177
|
-
const start = Date.now();
|
|
178
|
-
await randomDelay(50, 150);
|
|
179
|
-
const elapsed = Date.now() - start;
|
|
180
|
-
expect(elapsed).toBeGreaterThanOrEqual(45);
|
|
181
|
-
expect(elapsed).toBeLessThan(200);
|
|
182
|
-
});
|
|
183
|
-
it('should delay for minimum value when min equals max', async () => {
|
|
184
|
-
const start = Date.now();
|
|
185
|
-
await randomDelay(100, 100);
|
|
186
|
-
const elapsed = Date.now() - start;
|
|
187
|
-
expect(elapsed).toBeGreaterThanOrEqual(95);
|
|
188
|
-
expect(elapsed).toBeLessThan(150);
|
|
189
|
-
});
|
|
190
|
-
it('should handle zero delay', async () => {
|
|
191
|
-
const start = Date.now();
|
|
192
|
-
await randomDelay(0, 0);
|
|
193
|
-
const elapsed = Date.now() - start;
|
|
194
|
-
expect(elapsed).toBeLessThan(50);
|
|
195
|
-
});
|
|
196
|
-
it('should return a promise', () => {
|
|
197
|
-
const result = randomDelay(10, 20);
|
|
198
|
-
expect(result).toBeInstanceOf(Promise);
|
|
199
|
-
});
|
|
200
|
-
it('should use gaussian distribution for delays', async () => {
|
|
201
|
-
const delays = [];
|
|
202
|
-
for (let i = 0; i < 50; i++) {
|
|
203
|
-
const start = Date.now();
|
|
204
|
-
await randomDelay(100, 500);
|
|
205
|
-
delays.push(Date.now() - start);
|
|
206
|
-
}
|
|
207
|
-
// Most delays should be closer to middle of range
|
|
208
|
-
const avg = delays.reduce((a, b) => a + b, 0) / delays.length;
|
|
209
|
-
expect(avg).toBeGreaterThan(200);
|
|
210
|
-
expect(avg).toBeLessThan(400);
|
|
211
|
-
});
|
|
212
|
-
it('should use fixed average delay when stealth is disabled', async () => {
|
|
213
|
-
const originalEnabled = CONFIG.stealthEnabled;
|
|
214
|
-
CONFIG.stealthEnabled = false;
|
|
215
|
-
try {
|
|
216
|
-
const start = Date.now();
|
|
217
|
-
await randomDelay(100, 200); // Average would be 150ms
|
|
218
|
-
const elapsed = Date.now() - start;
|
|
219
|
-
// Should use fixed delay (average of min and max)
|
|
220
|
-
expect(elapsed).toBeGreaterThanOrEqual(140);
|
|
221
|
-
expect(elapsed).toBeLessThan(200);
|
|
222
|
-
}
|
|
223
|
-
finally {
|
|
224
|
-
CONFIG.stealthEnabled = originalEnabled;
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
it('should use fixed average delay when random delays are disabled', async () => {
|
|
228
|
-
const originalDelays = CONFIG.stealthRandomDelays;
|
|
229
|
-
CONFIG.stealthRandomDelays = false;
|
|
230
|
-
try {
|
|
231
|
-
const start = Date.now();
|
|
232
|
-
await randomDelay(100, 200);
|
|
233
|
-
const elapsed = Date.now() - start;
|
|
234
|
-
// Should use fixed delay
|
|
235
|
-
expect(elapsed).toBeGreaterThanOrEqual(140);
|
|
236
|
-
expect(elapsed).toBeLessThan(200);
|
|
237
|
-
}
|
|
238
|
-
finally {
|
|
239
|
-
CONFIG.stealthRandomDelays = originalDelays;
|
|
240
|
-
}
|
|
241
|
-
});
|
|
242
|
-
it('should use CONFIG defaults when no parameters provided', async () => {
|
|
243
|
-
const start = Date.now();
|
|
244
|
-
await randomDelay(); // Uses CONFIG.minDelayMs and CONFIG.maxDelayMs
|
|
245
|
-
const elapsed = Date.now() - start;
|
|
246
|
-
// Should be between CONFIG defaults (100-400ms by default)
|
|
247
|
-
expect(elapsed).toBeGreaterThanOrEqual(90);
|
|
248
|
-
expect(elapsed).toBeLessThan(500);
|
|
249
|
-
});
|
|
250
|
-
});
|
|
251
|
-
describe('edge cases', () => {
|
|
252
|
-
it('should handle very small numbers', () => {
|
|
253
|
-
const result = randomInt(0, 1);
|
|
254
|
-
expect([0, 1]).toContain(result);
|
|
255
|
-
});
|
|
256
|
-
it('should handle very large numbers', () => {
|
|
257
|
-
const result = randomInt(1000000, 1000001);
|
|
258
|
-
expect(result).toBeGreaterThanOrEqual(1000000);
|
|
259
|
-
expect(result).toBeLessThanOrEqual(1000001);
|
|
260
|
-
});
|
|
261
|
-
it('should handle decimal ranges in randomFloat', () => {
|
|
262
|
-
const result = randomFloat(0.001, 0.002);
|
|
263
|
-
expect(result).toBeGreaterThanOrEqual(0.001);
|
|
264
|
-
expect(result).toBeLessThan(0.002);
|
|
265
|
-
});
|
|
266
|
-
it('should handle large standard deviation in gaussian', () => {
|
|
267
|
-
const result = gaussian(0, 1000);
|
|
268
|
-
expect(typeof result).toBe('number');
|
|
269
|
-
expect(isNaN(result)).toBe(false);
|
|
270
|
-
});
|
|
271
|
-
});
|
|
272
|
-
describe('randomness quality', () => {
|
|
273
|
-
it('randomInt should have good distribution', () => {
|
|
274
|
-
const counts = [0, 0, 0, 0, 0];
|
|
275
|
-
for (let i = 0; i < 5000; i++) {
|
|
276
|
-
const val = randomInt(0, 4);
|
|
277
|
-
counts[val]++;
|
|
278
|
-
}
|
|
279
|
-
// Each bucket should have roughly 1000 values (20% of 5000)
|
|
280
|
-
// Allow variance between 15% and 25%
|
|
281
|
-
counts.forEach((count) => {
|
|
282
|
-
expect(count).toBeGreaterThan(750);
|
|
283
|
-
expect(count).toBeLessThan(1250);
|
|
284
|
-
});
|
|
285
|
-
});
|
|
286
|
-
it('randomFloat should have uniform distribution', () => {
|
|
287
|
-
const buckets = [0, 0, 0, 0, 0];
|
|
288
|
-
for (let i = 0; i < 5000; i++) {
|
|
289
|
-
const val = randomFloat(0, 5);
|
|
290
|
-
const bucket = Math.floor(val);
|
|
291
|
-
if (bucket < 5)
|
|
292
|
-
buckets[bucket]++;
|
|
293
|
-
}
|
|
294
|
-
// Each bucket should have roughly 1000 values
|
|
295
|
-
buckets.forEach((count) => {
|
|
296
|
-
expect(count).toBeGreaterThan(750);
|
|
297
|
-
expect(count).toBeLessThan(1250);
|
|
298
|
-
});
|
|
299
|
-
});
|
|
300
|
-
it('gaussian should produce bell curve', () => {
|
|
301
|
-
const values = [];
|
|
302
|
-
for (let i = 0; i < 10000; i++) {
|
|
303
|
-
values.push(gaussian(0, 1));
|
|
304
|
-
}
|
|
305
|
-
// Count values in different ranges
|
|
306
|
-
const veryClose = values.filter((v) => Math.abs(v) <= 0.5).length;
|
|
307
|
-
const close = values.filter((v) => Math.abs(v) > 0.5 && Math.abs(v) <= 1).length;
|
|
308
|
-
const medium = values.filter((v) => Math.abs(v) > 1 && Math.abs(v) <= 2).length;
|
|
309
|
-
const far = values.filter((v) => Math.abs(v) > 2).length;
|
|
310
|
-
// Bell curve: more values near center
|
|
311
|
-
expect(veryClose).toBeGreaterThan(close);
|
|
312
|
-
expect(close).toBeGreaterThan(medium);
|
|
313
|
-
expect(medium).toBeGreaterThan(far);
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
describe('readingPause', () => {
|
|
317
|
-
// Store original config values
|
|
318
|
-
let originalStealthEnabled;
|
|
319
|
-
let originalStealthRandomDelays;
|
|
320
|
-
beforeEach(() => {
|
|
321
|
-
originalStealthEnabled = CONFIG.stealthEnabled;
|
|
322
|
-
originalStealthRandomDelays = CONFIG.stealthRandomDelays;
|
|
323
|
-
});
|
|
324
|
-
afterEach(() => {
|
|
325
|
-
// Restore original config
|
|
326
|
-
CONFIG.stealthEnabled = originalStealthEnabled;
|
|
327
|
-
CONFIG.stealthRandomDelays =
|
|
328
|
-
originalStealthRandomDelays;
|
|
329
|
-
});
|
|
330
|
-
it('should return immediately when stealth is disabled', async () => {
|
|
331
|
-
CONFIG.stealthEnabled = false;
|
|
332
|
-
const start = Date.now();
|
|
333
|
-
await readingPause(100); // 100 characters
|
|
334
|
-
const elapsed = Date.now() - start;
|
|
335
|
-
// Should return almost immediately
|
|
336
|
-
expect(elapsed).toBeLessThan(50);
|
|
337
|
-
});
|
|
338
|
-
it('should return immediately when random delays are disabled', async () => {
|
|
339
|
-
CONFIG.stealthEnabled = true;
|
|
340
|
-
CONFIG.stealthRandomDelays = false;
|
|
341
|
-
const start = Date.now();
|
|
342
|
-
await readingPause(100);
|
|
343
|
-
const elapsed = Date.now() - start;
|
|
344
|
-
expect(elapsed).toBeLessThan(50);
|
|
345
|
-
});
|
|
346
|
-
it('should pause for short text when stealth is enabled', async () => {
|
|
347
|
-
CONFIG.stealthEnabled = true;
|
|
348
|
-
CONFIG.stealthRandomDelays = true;
|
|
349
|
-
const start = Date.now();
|
|
350
|
-
await readingPause(25); // ~5 words at 5 chars/word
|
|
351
|
-
const elapsed = Date.now() - start;
|
|
352
|
-
// Should pause but not too long
|
|
353
|
-
// At 200-250 WPM, 5 words = ~1.2-1.5 seconds
|
|
354
|
-
expect(elapsed).toBeGreaterThan(0);
|
|
355
|
-
// Could be up to 3 seconds max with randomness
|
|
356
|
-
expect(elapsed).toBeLessThan(4000);
|
|
357
|
-
});
|
|
358
|
-
it('should pause longer for longer text', async () => {
|
|
359
|
-
CONFIG.stealthEnabled = true;
|
|
360
|
-
CONFIG.stealthRandomDelays = true;
|
|
361
|
-
const startShort = Date.now();
|
|
362
|
-
await readingPause(10);
|
|
363
|
-
const elapsedShort = Date.now() - startShort;
|
|
364
|
-
const startLong = Date.now();
|
|
365
|
-
await readingPause(100);
|
|
366
|
-
const elapsedLong = Date.now() - startLong;
|
|
367
|
-
// Longer text should take longer (with some variance allowed)
|
|
368
|
-
// Note: Due to randomness, we just check general expectation
|
|
369
|
-
expect(typeof elapsedShort).toBe('number');
|
|
370
|
-
expect(typeof elapsedLong).toBe('number');
|
|
371
|
-
});
|
|
372
|
-
it('should respect custom WPM parameter', async () => {
|
|
373
|
-
CONFIG.stealthEnabled = true;
|
|
374
|
-
CONFIG.stealthRandomDelays = true;
|
|
375
|
-
// Very fast reading speed
|
|
376
|
-
const startFast = Date.now();
|
|
377
|
-
await readingPause(50, 500); // 500 WPM (very fast)
|
|
378
|
-
const elapsedFast = Date.now() - startFast;
|
|
379
|
-
// Slow reading speed
|
|
380
|
-
const startSlow = Date.now();
|
|
381
|
-
await readingPause(50, 100); // 100 WPM (slow)
|
|
382
|
-
const elapsedSlow = Date.now() - startSlow;
|
|
383
|
-
// Both should complete (basic sanity check)
|
|
384
|
-
expect(elapsedFast).toBeGreaterThanOrEqual(0);
|
|
385
|
-
expect(elapsedSlow).toBeGreaterThanOrEqual(0);
|
|
386
|
-
});
|
|
387
|
-
it('should cap reading time at 3 seconds', async () => {
|
|
388
|
-
CONFIG.stealthEnabled = true;
|
|
389
|
-
CONFIG.stealthRandomDelays = true;
|
|
390
|
-
const start = Date.now();
|
|
391
|
-
// Very long text (1000 chars = 200 words)
|
|
392
|
-
// At 200 WPM, this would be 60 seconds without cap
|
|
393
|
-
await readingPause(1000, 200);
|
|
394
|
-
const elapsed = Date.now() - start;
|
|
395
|
-
// Should be capped at ~3 seconds (with some tolerance for randomness)
|
|
396
|
-
expect(elapsed).toBeLessThan(4500); // 3s cap + 1.2x random + margin
|
|
397
|
-
});
|
|
398
|
-
it('should handle zero text length', async () => {
|
|
399
|
-
CONFIG.stealthEnabled = true;
|
|
400
|
-
CONFIG.stealthRandomDelays = true;
|
|
401
|
-
const start = Date.now();
|
|
402
|
-
await readingPause(0);
|
|
403
|
-
const elapsed = Date.now() - start;
|
|
404
|
-
// Zero text = 0 words = 0 time, but with randomness factor
|
|
405
|
-
expect(elapsed).toBeLessThan(1000);
|
|
406
|
-
});
|
|
407
|
-
it('should return a promise', () => {
|
|
408
|
-
const result = readingPause(50);
|
|
409
|
-
expect(result).toBeInstanceOf(Promise);
|
|
410
|
-
});
|
|
411
|
-
});
|
|
412
|
-
});
|
|
413
|
-
//# sourceMappingURL=stealth-utils.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stealth-utils.test.js","sourceRoot":"","sources":["../../src/__tests__/stealth-utils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/types.test.ts"],"names":[],"mappings":""}
|