@memvid/maw 1.0.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 +188 -0
- package/dist/bin/maw.d.ts +6 -0
- package/dist/bin/maw.d.ts.map +1 -0
- package/dist/bin/maw.js +275 -0
- package/dist/bin/maw.js.map +1 -0
- package/dist/src/crawler/index.d.ts +71 -0
- package/dist/src/crawler/index.d.ts.map +1 -0
- package/dist/src/crawler/index.js +249 -0
- package/dist/src/crawler/index.js.map +1 -0
- package/dist/src/crawler/robots.d.ts +26 -0
- package/dist/src/crawler/robots.d.ts.map +1 -0
- package/dist/src/crawler/robots.js +179 -0
- package/dist/src/crawler/robots.js.map +1 -0
- package/dist/src/crawler/sitemap.d.ts +36 -0
- package/dist/src/crawler/sitemap.d.ts.map +1 -0
- package/dist/src/crawler/sitemap.js +209 -0
- package/dist/src/crawler/sitemap.js.map +1 -0
- package/dist/src/engine/detector.d.ts +18 -0
- package/dist/src/engine/detector.d.ts.map +1 -0
- package/dist/src/engine/detector.js +155 -0
- package/dist/src/engine/detector.js.map +1 -0
- package/dist/src/engine/fetch.d.ts +18 -0
- package/dist/src/engine/fetch.d.ts.map +1 -0
- package/dist/src/engine/fetch.js +53 -0
- package/dist/src/engine/fetch.js.map +1 -0
- package/dist/src/engine/index.d.ts +39 -0
- package/dist/src/engine/index.d.ts.map +1 -0
- package/dist/src/engine/index.js +116 -0
- package/dist/src/engine/index.js.map +1 -0
- package/dist/src/engine/playwright.d.ts +23 -0
- package/dist/src/engine/playwright.d.ts.map +1 -0
- package/dist/src/engine/playwright.js +88 -0
- package/dist/src/engine/playwright.js.map +1 -0
- package/dist/src/engine/rebrowser.d.ts +22 -0
- package/dist/src/engine/rebrowser.d.ts.map +1 -0
- package/dist/src/engine/rebrowser.js +142 -0
- package/dist/src/engine/rebrowser.js.map +1 -0
- package/dist/src/extractor/cleaner.d.ts +13 -0
- package/dist/src/extractor/cleaner.d.ts.map +1 -0
- package/dist/src/extractor/cleaner.js +122 -0
- package/dist/src/extractor/cleaner.js.map +1 -0
- package/dist/src/extractor/index.d.ts +29 -0
- package/dist/src/extractor/index.d.ts.map +1 -0
- package/dist/src/extractor/index.js +162 -0
- package/dist/src/extractor/index.js.map +1 -0
- package/dist/src/extractor/links.d.ts +22 -0
- package/dist/src/extractor/links.d.ts.map +1 -0
- package/dist/src/extractor/links.js +92 -0
- package/dist/src/extractor/links.js.map +1 -0
- package/dist/src/extractor/markdown.d.ts +13 -0
- package/dist/src/extractor/markdown.d.ts.map +1 -0
- package/dist/src/extractor/markdown.js +94 -0
- package/dist/src/extractor/markdown.js.map +1 -0
- package/dist/src/git/index.d.ts +40 -0
- package/dist/src/git/index.d.ts.map +1 -0
- package/dist/src/git/index.js +303 -0
- package/dist/src/git/index.js.map +1 -0
- package/dist/src/index.d.ts +103 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +229 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/ingestor/index.d.ts +95 -0
- package/dist/src/ingestor/index.d.ts.map +1 -0
- package/dist/src/ingestor/index.js +471 -0
- package/dist/src/ingestor/index.js.map +1 -0
- package/dist/src/utils/dedup.d.ts +66 -0
- package/dist/src/utils/dedup.d.ts.map +1 -0
- package/dist/src/utils/dedup.js +296 -0
- package/dist/src/utils/dedup.js.map +1 -0
- package/dist/src/utils/index.d.ts +3 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +3 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/logger.d.ts +12 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +49 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/ui.d.ts +126 -0
- package/dist/src/utils/ui.d.ts.map +1 -0
- package/dist/src/utils/ui.js +357 -0
- package/dist/src/utils/ui.js.map +1 -0
- package/dist/src/utils/url.d.ts +21 -0
- package/dist/src/utils/url.d.ts.map +1 -0
- package/dist/src/utils/url.js +107 -0
- package/dist/src/utils/url.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Beautiful terminal UI for maw
|
|
3
|
+
* Clean, minimal, production-ready
|
|
4
|
+
*/
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
// Theme colors - refined palette
|
|
7
|
+
const theme = {
|
|
8
|
+
primary: chalk.hex('#a78bfa'), // Soft violet
|
|
9
|
+
success: chalk.hex('#34d399'), // Mint green
|
|
10
|
+
warning: chalk.hex('#fbbf24'), // Golden
|
|
11
|
+
error: chalk.hex('#f87171'), // Soft red
|
|
12
|
+
muted: chalk.hex('#9ca3af'), // Gray
|
|
13
|
+
accent: chalk.hex('#60a5fa'), // Sky blue
|
|
14
|
+
info: chalk.hex('#38bdf8'), // Cyan
|
|
15
|
+
dim: chalk.dim,
|
|
16
|
+
bold: chalk.bold,
|
|
17
|
+
white: chalk.white,
|
|
18
|
+
};
|
|
19
|
+
// Icons
|
|
20
|
+
const icons = {
|
|
21
|
+
success: '✓',
|
|
22
|
+
error: '✗',
|
|
23
|
+
warning: '⚠',
|
|
24
|
+
arrow: '→',
|
|
25
|
+
bullet: '•',
|
|
26
|
+
page: '◉',
|
|
27
|
+
folder: '◈',
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Format bytes to human readable
|
|
31
|
+
*/
|
|
32
|
+
export function formatBytes(bytes) {
|
|
33
|
+
if (bytes < 1024)
|
|
34
|
+
return `${bytes} B`;
|
|
35
|
+
if (bytes < 1024 * 1024)
|
|
36
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
37
|
+
if (bytes < 1024 * 1024 * 1024)
|
|
38
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
39
|
+
return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Format duration to human readable
|
|
43
|
+
*/
|
|
44
|
+
export function formatDuration(ms) {
|
|
45
|
+
if (ms < 1000)
|
|
46
|
+
return `${ms}ms`;
|
|
47
|
+
if (ms < 60000)
|
|
48
|
+
return `${(ms / 1000).toFixed(1)}s`;
|
|
49
|
+
const mins = Math.floor(ms / 60000);
|
|
50
|
+
const secs = Math.floor((ms % 60000) / 1000);
|
|
51
|
+
return `${mins}m ${secs}s`;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Truncate URL for display
|
|
55
|
+
*/
|
|
56
|
+
function truncateUrl(url, maxLen = 60) {
|
|
57
|
+
if (url.length <= maxLen)
|
|
58
|
+
return url;
|
|
59
|
+
try {
|
|
60
|
+
const parsed = new URL(url);
|
|
61
|
+
const host = parsed.hostname;
|
|
62
|
+
const path = parsed.pathname;
|
|
63
|
+
// Show host + truncated path
|
|
64
|
+
const availableForPath = maxLen - host.length - 5;
|
|
65
|
+
if (availableForPath > 10) {
|
|
66
|
+
return `${host}/...${path.slice(-availableForPath)}`;
|
|
67
|
+
}
|
|
68
|
+
return url.slice(0, maxLen - 3) + '...';
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return url.slice(0, maxLen - 3) + '...';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Create a smooth progress bar
|
|
76
|
+
*/
|
|
77
|
+
export function progressBar(current, total, width = 24) {
|
|
78
|
+
const ratio = Math.min(current / total, 1);
|
|
79
|
+
const filled = Math.round(ratio * width);
|
|
80
|
+
const empty = width - filled;
|
|
81
|
+
const filledBar = theme.primary('━'.repeat(filled));
|
|
82
|
+
const emptyBar = theme.muted('─'.repeat(empty));
|
|
83
|
+
return filledBar + emptyBar;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Clean header - no box, just styled text
|
|
87
|
+
*/
|
|
88
|
+
export function header(title, subtitle) {
|
|
89
|
+
const lines = [''];
|
|
90
|
+
lines.push(` ${theme.primary.bold(title)}`);
|
|
91
|
+
if (subtitle) {
|
|
92
|
+
// Truncate long URLs
|
|
93
|
+
const display = truncateUrl(subtitle, 70);
|
|
94
|
+
lines.push(` ${theme.muted(display)}`);
|
|
95
|
+
}
|
|
96
|
+
lines.push('');
|
|
97
|
+
return lines.join('\n');
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Crawl progress line - clean and minimal
|
|
101
|
+
*/
|
|
102
|
+
export function crawlProgress(current, total, title, status) {
|
|
103
|
+
const bar = progressBar(current, Math.max(total, current), 20);
|
|
104
|
+
const count = theme.muted(`${current}/${total}`);
|
|
105
|
+
const titleTrunc = title.length > 50 ? title.slice(0, 47) + '...' : title;
|
|
106
|
+
return `\n ${bar} ${count}\n ${theme.white(titleTrunc)}`;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Success message - clean layout
|
|
110
|
+
*/
|
|
111
|
+
export function successMessage(output, size, pages, duration) {
|
|
112
|
+
const lines = [''];
|
|
113
|
+
// Success line
|
|
114
|
+
lines.push(` ${theme.success(icons.success)} ${theme.success.bold(output)}`);
|
|
115
|
+
lines.push('');
|
|
116
|
+
// Stats in a clean row
|
|
117
|
+
const stats = [
|
|
118
|
+
`${theme.muted('Size')} ${theme.accent.bold(formatBytes(size))}`,
|
|
119
|
+
`${theme.muted('Pages')} ${theme.accent.bold(pages.toString())}`,
|
|
120
|
+
`${theme.muted('Time')} ${theme.accent.bold(formatDuration(duration))}`,
|
|
121
|
+
].join(' ');
|
|
122
|
+
lines.push(` ${stats}`);
|
|
123
|
+
return lines.join('\n');
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Engine stats display
|
|
127
|
+
*/
|
|
128
|
+
export function engineStats(stats) {
|
|
129
|
+
const parts = [
|
|
130
|
+
stats.fetch > 0 ? theme.success(`fetch ${stats.fetch}`) : null,
|
|
131
|
+
stats.playwright > 0 ? theme.info(`browser ${stats.playwright}`) : null,
|
|
132
|
+
stats.rebrowser > 0 ? theme.warning(`stealth ${stats.rebrowser}`) : null,
|
|
133
|
+
stats.blocked > 0 ? theme.error(`blocked ${stats.blocked}`) : null,
|
|
134
|
+
].filter(Boolean);
|
|
135
|
+
if (parts.length === 0)
|
|
136
|
+
return '';
|
|
137
|
+
return `\n ${theme.muted('Engines:')} ${parts.join(theme.muted(' · '))}`;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Dedup stats display
|
|
141
|
+
*/
|
|
142
|
+
export function dedupStats(stats) {
|
|
143
|
+
if (stats.localeSkipped === 0 && stats.similarSkipped === 0)
|
|
144
|
+
return '';
|
|
145
|
+
const parts = [];
|
|
146
|
+
if (stats.localeSkipped > 0) {
|
|
147
|
+
parts.push(`${stats.localeSkipped} locales`);
|
|
148
|
+
}
|
|
149
|
+
if (stats.similarSkipped > 0) {
|
|
150
|
+
parts.push(`${stats.similarSkipped} similar`);
|
|
151
|
+
}
|
|
152
|
+
return `\n ${theme.muted('Skipped:')} ${theme.info(parts.join(', '))}`;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Warning message for size limit
|
|
156
|
+
*/
|
|
157
|
+
export function limitWarning() {
|
|
158
|
+
const lines = [''];
|
|
159
|
+
lines.push(` ${theme.warning(icons.warning)} ${theme.warning('Stopped at free tier limit (~50MB)')}`);
|
|
160
|
+
lines.push(` ${theme.muted('Set MEMVID_API_KEY for unlimited crawling')}`);
|
|
161
|
+
lines.push(` ${theme.muted('Get your key:')} ${theme.info('https://memvid.com/dashboard/api')}`);
|
|
162
|
+
return lines.join('\n');
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Cloud sync message
|
|
166
|
+
*/
|
|
167
|
+
export function cloudSyncMessage(memoryId) {
|
|
168
|
+
const dashboardUrl = process.env.MEMVID_DASHBOARD_URL || 'https://memvid.com';
|
|
169
|
+
return `\n ${theme.muted('Synced:')} ${theme.info(`${dashboardUrl}/memories/${memoryId}`)}`;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Error message
|
|
173
|
+
*/
|
|
174
|
+
export function errorMessage(message) {
|
|
175
|
+
return `\n ${theme.error(icons.error)} ${theme.error(message)}\n`;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Maw banner - minimal and clean
|
|
179
|
+
*/
|
|
180
|
+
export function banner() {
|
|
181
|
+
return `
|
|
182
|
+
${theme.primary.bold('maw')} ${theme.muted('— Feed the maw. It never forgets.')}
|
|
183
|
+
`;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Preview results display
|
|
187
|
+
*/
|
|
188
|
+
export function previewResults(result) {
|
|
189
|
+
const lines = [''];
|
|
190
|
+
lines.push(` ${theme.primary.bold(result.domain)}`);
|
|
191
|
+
lines.push(` ${theme.muted(`${result.totalPages.toLocaleString()} pages in sitemap`)}`);
|
|
192
|
+
if (result.estimatedSize) {
|
|
193
|
+
lines.push(` ${theme.muted('Est. size:')} ${theme.accent(result.estimatedSize)}`);
|
|
194
|
+
}
|
|
195
|
+
if (result.recentPages.length > 0) {
|
|
196
|
+
lines.push('');
|
|
197
|
+
lines.push(` ${theme.muted('Recent:')}`);
|
|
198
|
+
for (const page of result.recentPages.slice(0, 8)) {
|
|
199
|
+
const date = page.lastmod ? theme.warning(page.lastmod) + ' ' : '';
|
|
200
|
+
const url = truncateUrl(page.url, 55);
|
|
201
|
+
lines.push(` ${date}${theme.info(url)}`);
|
|
202
|
+
}
|
|
203
|
+
if (result.recentPages.length > 8) {
|
|
204
|
+
lines.push(` ${theme.muted(`... +${result.recentPages.length - 8} more`)}`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (!result.hasSitemap) {
|
|
208
|
+
lines.push('');
|
|
209
|
+
lines.push(` ${theme.muted('No sitemap. Will discover by crawling.')}`);
|
|
210
|
+
}
|
|
211
|
+
lines.push('');
|
|
212
|
+
return lines.join('\n');
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Search results display
|
|
216
|
+
*/
|
|
217
|
+
export function searchResults(hits) {
|
|
218
|
+
const lines = [''];
|
|
219
|
+
if (hits.length === 0) {
|
|
220
|
+
lines.push(` ${theme.muted('No results found.')}`);
|
|
221
|
+
return lines.join('\n');
|
|
222
|
+
}
|
|
223
|
+
// Deduplicate by base title (remove page info, keep highest score)
|
|
224
|
+
const seen = new Map();
|
|
225
|
+
for (const hit of hits) {
|
|
226
|
+
// Extract base title (remove " (page X/Y)" suffix)
|
|
227
|
+
const baseTitle = hit.title.replace(/\s*\(page \d+\/\d+\)\s*$/, '');
|
|
228
|
+
const existing = seen.get(baseTitle);
|
|
229
|
+
if (!existing || (hit.score || 0) > (existing.score || 0)) {
|
|
230
|
+
seen.set(baseTitle, { ...hit, title: baseTitle });
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
const uniqueHits = Array.from(seen.values());
|
|
234
|
+
for (let i = 0; i < uniqueHits.length; i++) {
|
|
235
|
+
const hit = uniqueHits[i];
|
|
236
|
+
// Normalize score: if > 1, it's probably raw similarity, cap at 99
|
|
237
|
+
let scoreDisplay = '';
|
|
238
|
+
if (hit.score !== undefined) {
|
|
239
|
+
const normalizedScore = hit.score > 1 ? Math.min(hit.score / 2, 0.99) : hit.score;
|
|
240
|
+
scoreDisplay = theme.accent(`${(normalizedScore * 100).toFixed(0)}%`) + ' ';
|
|
241
|
+
}
|
|
242
|
+
// Show full title (no truncation)
|
|
243
|
+
lines.push(` ${theme.muted(`${i + 1}.`)} ${scoreDisplay}${theme.white(hit.title)}`);
|
|
244
|
+
if (hit.metadata?.url && !hit.metadata.url.startsWith('mv2://')) {
|
|
245
|
+
lines.push(` ${theme.muted(hit.metadata.url)}`);
|
|
246
|
+
}
|
|
247
|
+
lines.push('');
|
|
248
|
+
}
|
|
249
|
+
return lines.join('\n');
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Ask result display
|
|
253
|
+
*/
|
|
254
|
+
export function askResult(answer, sources) {
|
|
255
|
+
const lines = [''];
|
|
256
|
+
// Wrap answer text nicely
|
|
257
|
+
const maxWidth = 75;
|
|
258
|
+
const words = answer.split(' ');
|
|
259
|
+
let currentLine = ' ';
|
|
260
|
+
for (const word of words) {
|
|
261
|
+
if (currentLine.length + word.length + 1 > maxWidth) {
|
|
262
|
+
lines.push(currentLine);
|
|
263
|
+
currentLine = ' ' + word;
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
currentLine += (currentLine === ' ' ? '' : ' ') + word;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
if (currentLine.trim()) {
|
|
270
|
+
lines.push(currentLine);
|
|
271
|
+
}
|
|
272
|
+
lines.push('');
|
|
273
|
+
if (sources && sources.length > 0) {
|
|
274
|
+
// Deduplicate sources by base title (remove page info)
|
|
275
|
+
const seen = new Set();
|
|
276
|
+
const uniqueSources = sources.filter(s => {
|
|
277
|
+
// Extract base title (remove " (page X/Y)" suffix)
|
|
278
|
+
let key = (s.title || s.url || '').replace(/\s*\(page \d+\/\d+\)\s*$/, '');
|
|
279
|
+
if (seen.has(key))
|
|
280
|
+
return false;
|
|
281
|
+
seen.add(key);
|
|
282
|
+
return true;
|
|
283
|
+
});
|
|
284
|
+
lines.push(` ${theme.muted('Sources:')}`);
|
|
285
|
+
for (const source of uniqueSources.slice(0, 3)) {
|
|
286
|
+
// Clean up title - remove page info for cleaner display
|
|
287
|
+
let display = (source.title || source.url || '').replace(/\s*\(page \d+\/\d+\)\s*$/, '');
|
|
288
|
+
lines.push(` ${theme.muted('›')} ${theme.info(display)}`);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
lines.push('');
|
|
292
|
+
return lines.join('\n');
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* List documents display
|
|
296
|
+
*/
|
|
297
|
+
export function listDocuments(items) {
|
|
298
|
+
const lines = [''];
|
|
299
|
+
if (items.length === 0) {
|
|
300
|
+
lines.push(` ${theme.muted('No documents found.')}`);
|
|
301
|
+
return lines.join('\n');
|
|
302
|
+
}
|
|
303
|
+
// Deduplicate by base title (remove page info)
|
|
304
|
+
const seen = new Map();
|
|
305
|
+
for (const item of items) {
|
|
306
|
+
// Extract base title (remove " (page X/Y)" suffix)
|
|
307
|
+
const baseTitle = (item.title || item.preview || '').replace(/\s*\(page \d+\/\d+\)\s*$/, '');
|
|
308
|
+
const key = baseTitle || item.url || '';
|
|
309
|
+
const existing = seen.get(key);
|
|
310
|
+
if (existing) {
|
|
311
|
+
existing.pages++;
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
seen.set(key, { item: { ...item, title: baseTitle || item.title }, pages: 1 });
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
const uniqueItems = Array.from(seen.values());
|
|
318
|
+
lines.push(` ${theme.muted(`${uniqueItems.length} document${uniqueItems.length !== 1 ? 's' : ''}`)}`);
|
|
319
|
+
lines.push('');
|
|
320
|
+
for (let i = 0; i < uniqueItems.length; i++) {
|
|
321
|
+
const { item, pages } = uniqueItems[i];
|
|
322
|
+
const title = item.title || item.preview || 'Untitled';
|
|
323
|
+
const pageInfo = pages > 1 ? theme.muted(` (${pages} pages)`) : '';
|
|
324
|
+
lines.push(` ${theme.muted(`${i + 1}.`)} ${theme.white(title)}${pageInfo}`);
|
|
325
|
+
if (item.url && !item.url.startsWith('mv2://')) {
|
|
326
|
+
lines.push(` ${theme.muted(item.url)}`);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
lines.push('');
|
|
330
|
+
return lines.join('\n');
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Stats panel for detailed view
|
|
334
|
+
*/
|
|
335
|
+
export function statsPanel(stats) {
|
|
336
|
+
const lines = [''];
|
|
337
|
+
for (const [key, value] of Object.entries(stats)) {
|
|
338
|
+
const val = typeof value === 'number' ? value.toLocaleString() : value;
|
|
339
|
+
lines.push(` ${theme.muted(key)} ${theme.accent(val)}`);
|
|
340
|
+
}
|
|
341
|
+
return lines.join('\n');
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Summary table
|
|
345
|
+
*/
|
|
346
|
+
export function summaryTable(rows) {
|
|
347
|
+
const lines = [''];
|
|
348
|
+
for (const row of rows) {
|
|
349
|
+
const colorFn = row.color ? theme[row.color] : theme.info;
|
|
350
|
+
const value = typeof row.value === 'number' ? row.value.toLocaleString() : row.value;
|
|
351
|
+
lines.push(` ${theme.muted(row.label.padEnd(20))} ${colorFn.bold(value)}`);
|
|
352
|
+
}
|
|
353
|
+
return lines.join('\n');
|
|
354
|
+
}
|
|
355
|
+
// Export theme for custom usage
|
|
356
|
+
export { theme };
|
|
357
|
+
//# sourceMappingURL=ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/utils/ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* URL utilities for maw
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Normalize a URL for deduplication
|
|
6
|
+
*/
|
|
7
|
+
export declare function normalizeUrl(url: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Extract the base domain from a URL
|
|
10
|
+
*/
|
|
11
|
+
export declare function getBaseDomain(url: string): string;
|
|
12
|
+
export declare function shouldSkipUrl(url: string): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Resolve a relative URL against a base URL
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveUrl(href: string, baseUrl: string): string | null;
|
|
17
|
+
/**
|
|
18
|
+
* Check if two URLs are on the same domain
|
|
19
|
+
*/
|
|
20
|
+
export declare function isSameDomain(url1: string, url2: string): boolean;
|
|
21
|
+
//# sourceMappingURL=url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/utils/url.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA2BhD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOjD;AAgBD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAqBlD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQhE"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* URL utilities for maw
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Normalize a URL for deduplication
|
|
6
|
+
*/
|
|
7
|
+
export function normalizeUrl(url) {
|
|
8
|
+
try {
|
|
9
|
+
const parsed = new URL(url.startsWith('http') ? url : `https://${url}`);
|
|
10
|
+
// Remove trailing slash
|
|
11
|
+
let path = parsed.pathname;
|
|
12
|
+
if (path.endsWith('/') && path !== '/') {
|
|
13
|
+
path = path.slice(0, -1);
|
|
14
|
+
}
|
|
15
|
+
// Remove common tracking params
|
|
16
|
+
parsed.searchParams.delete('utm_source');
|
|
17
|
+
parsed.searchParams.delete('utm_medium');
|
|
18
|
+
parsed.searchParams.delete('utm_campaign');
|
|
19
|
+
parsed.searchParams.delete('utm_content');
|
|
20
|
+
parsed.searchParams.delete('utm_term');
|
|
21
|
+
parsed.searchParams.delete('ref');
|
|
22
|
+
parsed.searchParams.delete('fbclid');
|
|
23
|
+
parsed.searchParams.delete('gclid');
|
|
24
|
+
// Remove hash
|
|
25
|
+
parsed.hash = '';
|
|
26
|
+
return `${parsed.origin}${path}${parsed.search}`;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return url;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Extract the base domain from a URL
|
|
34
|
+
*/
|
|
35
|
+
export function getBaseDomain(url) {
|
|
36
|
+
try {
|
|
37
|
+
const parsed = new URL(url.startsWith('http') ? url : `https://${url}`);
|
|
38
|
+
return parsed.hostname.replace(/^www\./, '');
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return url;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Check if a URL should be skipped (non-HTML resources)
|
|
46
|
+
*/
|
|
47
|
+
const SKIP_EXTENSIONS = new Set([
|
|
48
|
+
'.pdf', '.jpg', '.jpeg', '.png', '.gif', '.svg', '.ico', '.webp', '.avif',
|
|
49
|
+
'.css', '.js', '.mjs', '.cjs', '.ts', '.tsx', '.jsx',
|
|
50
|
+
'.woff', '.woff2', '.ttf', '.eot', '.otf',
|
|
51
|
+
'.mp4', '.mp3', '.wav', '.ogg', '.webm', '.avi', '.mov',
|
|
52
|
+
'.zip', '.tar', '.gz', '.rar', '.7z',
|
|
53
|
+
'.exe', '.dmg', '.pkg', '.deb', '.rpm',
|
|
54
|
+
'.json', '.xml', '.yaml', '.yml', '.toml',
|
|
55
|
+
'.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx',
|
|
56
|
+
]);
|
|
57
|
+
export function shouldSkipUrl(url) {
|
|
58
|
+
try {
|
|
59
|
+
const parsed = new URL(url);
|
|
60
|
+
const pathname = parsed.pathname.toLowerCase();
|
|
61
|
+
// Skip non-HTML extensions
|
|
62
|
+
for (const ext of SKIP_EXTENSIONS) {
|
|
63
|
+
if (pathname.endsWith(ext)) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Skip mailto and javascript links
|
|
68
|
+
if (url.startsWith('mailto:') || url.startsWith('javascript:') || url.startsWith('tel:')) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Resolve a relative URL against a base URL
|
|
79
|
+
*/
|
|
80
|
+
export function resolveUrl(href, baseUrl) {
|
|
81
|
+
try {
|
|
82
|
+
if (href.startsWith('#'))
|
|
83
|
+
return null;
|
|
84
|
+
if (href.startsWith('mailto:') || href.startsWith('javascript:') || href.startsWith('tel:')) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
const base = new URL(baseUrl);
|
|
88
|
+
return new URL(href, base.origin).href;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Check if two URLs are on the same domain
|
|
96
|
+
*/
|
|
97
|
+
export function isSameDomain(url1, url2) {
|
|
98
|
+
try {
|
|
99
|
+
const domain1 = getBaseDomain(url1);
|
|
100
|
+
const domain2 = getBaseDomain(url2);
|
|
101
|
+
return domain1 === domain2;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/utils/url.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@memvid/maw",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Crawl any site. Search it forever.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"maw": "dist/bin/maw.js"
|
|
10
|
+
},
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://github.com/memvid/maw.git"
|
|
14
|
+
},
|
|
15
|
+
"homepage": "https://github.com/memvid/maw#readme",
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/memvid/maw/issues"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc",
|
|
21
|
+
"dev": "tsx watch src/index.ts",
|
|
22
|
+
"test": "vitest",
|
|
23
|
+
"prepublishOnly": "npm run build"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"web-scraper",
|
|
27
|
+
"markdown",
|
|
28
|
+
"ai",
|
|
29
|
+
"memory",
|
|
30
|
+
"rag",
|
|
31
|
+
"offline",
|
|
32
|
+
"documentation",
|
|
33
|
+
"crawler"
|
|
34
|
+
],
|
|
35
|
+
"author": "Memvid",
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"@memvid/sdk": "^2.0.148",
|
|
39
|
+
"@mozilla/readability": "^0.5.0",
|
|
40
|
+
"chalk": "^5.3.0",
|
|
41
|
+
"cheerio": "^1.0.0",
|
|
42
|
+
"cliui": "^9.0.1",
|
|
43
|
+
"commander": "^12.0.0",
|
|
44
|
+
"jsdom": "^24.0.0",
|
|
45
|
+
"node-html-markdown": "^1.3.0",
|
|
46
|
+
"p-queue": "^8.0.0",
|
|
47
|
+
"sitemapper": "^4.0.2"
|
|
48
|
+
},
|
|
49
|
+
"optionalDependencies": {
|
|
50
|
+
"playwright": "^1.47.0",
|
|
51
|
+
"rebrowser-playwright": "^1.47.0"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@types/jsdom": "^21.0.0",
|
|
55
|
+
"@types/node": "^20.0.0",
|
|
56
|
+
"tsx": "^4.0.0",
|
|
57
|
+
"typescript": "^5.0.0",
|
|
58
|
+
"vitest": "^1.0.0"
|
|
59
|
+
},
|
|
60
|
+
"engines": {
|
|
61
|
+
"node": ">=20"
|
|
62
|
+
},
|
|
63
|
+
"files": [
|
|
64
|
+
"dist",
|
|
65
|
+
"README.md",
|
|
66
|
+
"LICENSE"
|
|
67
|
+
],
|
|
68
|
+
"publishConfig": {
|
|
69
|
+
"access": "public"
|
|
70
|
+
}
|
|
71
|
+
}
|