@j0hanz/superfetch 2.2.1 → 2.2.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.
Files changed (66) hide show
  1. package/README.md +363 -614
  2. package/dist/cache.d.ts +2 -2
  3. package/dist/cache.d.ts.map +1 -1
  4. package/dist/cache.js +47 -225
  5. package/dist/cache.js.map +1 -1
  6. package/dist/config.d.ts +6 -0
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +20 -27
  9. package/dist/config.js.map +1 -1
  10. package/dist/dom-noise-removal.d.ts +6 -0
  11. package/dist/dom-noise-removal.d.ts.map +1 -0
  12. package/dist/dom-noise-removal.js +482 -0
  13. package/dist/dom-noise-removal.js.map +1 -0
  14. package/dist/errors.d.ts.map +1 -1
  15. package/dist/errors.js +8 -5
  16. package/dist/errors.js.map +1 -1
  17. package/dist/fetch.d.ts.map +1 -1
  18. package/dist/fetch.js +26 -32
  19. package/dist/fetch.js.map +1 -1
  20. package/dist/http-native.d.ts +6 -0
  21. package/dist/http-native.d.ts.map +1 -0
  22. package/dist/http-native.js +645 -0
  23. package/dist/http-native.js.map +1 -0
  24. package/dist/http-utils.d.ts +61 -0
  25. package/dist/http-utils.d.ts.map +1 -0
  26. package/dist/http-utils.js +252 -0
  27. package/dist/http-utils.js.map +1 -0
  28. package/dist/index.js +1 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/instructions.md +41 -39
  31. package/dist/json.d.ts +2 -0
  32. package/dist/json.d.ts.map +1 -0
  33. package/dist/json.js +30 -0
  34. package/dist/json.js.map +1 -0
  35. package/dist/language-detection.d.ts +13 -0
  36. package/dist/language-detection.d.ts.map +1 -0
  37. package/dist/language-detection.js +283 -0
  38. package/dist/language-detection.js.map +1 -0
  39. package/dist/markdown-cleanup.d.ts +19 -0
  40. package/dist/markdown-cleanup.d.ts.map +1 -0
  41. package/dist/markdown-cleanup.js +283 -0
  42. package/dist/markdown-cleanup.js.map +1 -0
  43. package/dist/observability.d.ts +1 -0
  44. package/dist/observability.d.ts.map +1 -1
  45. package/dist/observability.js +10 -0
  46. package/dist/observability.js.map +1 -1
  47. package/dist/tools.js +4 -4
  48. package/dist/transform-types.d.ts +81 -0
  49. package/dist/transform-types.d.ts.map +1 -0
  50. package/dist/transform-types.js +6 -0
  51. package/dist/transform-types.js.map +1 -0
  52. package/dist/transform.d.ts +7 -52
  53. package/dist/transform.d.ts.map +1 -1
  54. package/dist/transform.js +411 -839
  55. package/dist/transform.js.map +1 -1
  56. package/dist/type-guards.d.ts +1 -1
  57. package/dist/type-guards.d.ts.map +1 -1
  58. package/dist/type-guards.js +1 -1
  59. package/dist/type-guards.js.map +1 -1
  60. package/dist/workers/transform-worker.js +23 -24
  61. package/dist/workers/transform-worker.js.map +1 -1
  62. package/package.json +85 -86
  63. package/dist/http.d.ts +0 -90
  64. package/dist/http.d.ts.map +0 -1
  65. package/dist/http.js +0 -1576
  66. package/dist/http.js.map +0 -1
@@ -0,0 +1,283 @@
1
+ /**
2
+ * Language detection for code blocks.
3
+ * Detects programming languages from code content and HTML attributes.
4
+ */
5
+ /**
6
+ * Check if source contains the given word as a standalone word (not part of another word).
7
+ */
8
+ function containsWord(source, word) {
9
+ return new RegExp(`\\b${word}\\b`).test(source);
10
+ }
11
+ /**
12
+ * Extract language from class name (e.g., "language-typescript", "lang-js", "hljs javascript").
13
+ */
14
+ function extractLanguageFromClassName(className) {
15
+ const tokens = className.match(/\S+/g);
16
+ if (!tokens)
17
+ return undefined;
18
+ for (const token of tokens) {
19
+ const lower = token.toLowerCase();
20
+ if (lower.startsWith('language-'))
21
+ return token.slice('language-'.length);
22
+ if (lower.startsWith('lang-'))
23
+ return token.slice('lang-'.length);
24
+ if (lower.startsWith('highlight-')) {
25
+ return token.slice('highlight-'.length);
26
+ }
27
+ }
28
+ if (tokens.includes('hljs')) {
29
+ const langClass = tokens.find((t) => t !== 'hljs' && !t.startsWith('hljs-'));
30
+ if (langClass)
31
+ return langClass;
32
+ }
33
+ return undefined;
34
+ }
35
+ /**
36
+ * Resolve language from data-language attribute.
37
+ * Only allows word characters (alphanumeric + underscore).
38
+ */
39
+ function resolveLanguageFromDataAttribute(dataLang) {
40
+ const trimmed = dataLang.trim();
41
+ if (!trimmed)
42
+ return undefined;
43
+ // Allow only word characters (letters, digits, underscore)
44
+ return /^\w+$/.test(trimmed) ? trimmed : undefined;
45
+ }
46
+ /**
47
+ * Check if code contains JSX-style tags (tags starting with uppercase like <Component>).
48
+ */
49
+ function containsJsxTag(code) {
50
+ for (let index = 0; index < code.length - 1; index += 1) {
51
+ if (code[index] !== '<')
52
+ continue;
53
+ const next = code[index + 1];
54
+ if (!next)
55
+ continue;
56
+ if (next >= 'A' && next <= 'Z')
57
+ return true;
58
+ }
59
+ return false;
60
+ }
61
+ // Bash detection constants
62
+ const BASH_COMMANDS = ['sudo', 'chmod', 'mkdir', 'cd', 'ls', 'cat', 'echo'];
63
+ const BASH_PKG_MANAGERS = [
64
+ 'npm',
65
+ 'yarn',
66
+ 'pnpm',
67
+ 'npx',
68
+ 'brew',
69
+ 'apt',
70
+ 'pip',
71
+ 'cargo',
72
+ 'go',
73
+ ];
74
+ const BASH_VERBS = ['install', 'add', 'run', 'build', 'start'];
75
+ function isShellPrefix(line) {
76
+ return (line.startsWith('#!') || line.startsWith('$ ') || line.startsWith('# '));
77
+ }
78
+ function matchesBashCommand(line) {
79
+ return BASH_COMMANDS.some((cmd) => line === cmd || line.startsWith(`${cmd} `));
80
+ }
81
+ function matchesPackageManagerVerb(line) {
82
+ for (const mgr of BASH_PKG_MANAGERS) {
83
+ if (!line.startsWith(`${mgr} `))
84
+ continue;
85
+ const rest = line.slice(mgr.length + 1);
86
+ if (BASH_VERBS.some((v) => rest === v || rest.startsWith(`${v} `))) {
87
+ return true;
88
+ }
89
+ }
90
+ return false;
91
+ }
92
+ function detectBashIndicators(code) {
93
+ for (const line of code.split('\n')) {
94
+ const trimmed = line.trimStart();
95
+ if (trimmed &&
96
+ (isShellPrefix(trimmed) ||
97
+ matchesBashCommand(trimmed) ||
98
+ matchesPackageManagerVerb(trimmed))) {
99
+ return true;
100
+ }
101
+ }
102
+ return false;
103
+ }
104
+ function detectCssStructure(code) {
105
+ for (const line of code.split('\n')) {
106
+ const trimmed = line.trimStart();
107
+ if (!trimmed)
108
+ continue;
109
+ const hasSelector = (trimmed.startsWith('.') || trimmed.startsWith('#')) &&
110
+ trimmed.includes('{');
111
+ if (hasSelector || (trimmed.includes(':') && trimmed.includes(';'))) {
112
+ return true;
113
+ }
114
+ }
115
+ return false;
116
+ }
117
+ function detectYamlStructure(code) {
118
+ for (const line of code.split('\n')) {
119
+ const trimmed = line.trim();
120
+ if (!trimmed)
121
+ continue;
122
+ const colonIdx = trimmed.indexOf(':');
123
+ if (colonIdx > 0) {
124
+ const after = trimmed[colonIdx + 1];
125
+ if (after === ' ' || after === '\t')
126
+ return true;
127
+ }
128
+ }
129
+ return false;
130
+ }
131
+ /**
132
+ * Language detection patterns in priority order.
133
+ */
134
+ const LANGUAGE_PATTERNS = [
135
+ {
136
+ language: 'jsx',
137
+ pattern: {
138
+ keywords: ['classname=', 'jsx:', "from 'react'", 'from "react"'],
139
+ custom: (code) => containsJsxTag(code),
140
+ },
141
+ },
142
+ {
143
+ language: 'typescript',
144
+ pattern: {
145
+ wordBoundary: ['interface', 'type'],
146
+ custom: (_, lower) => [
147
+ ': string',
148
+ ':string',
149
+ ': number',
150
+ ':number',
151
+ ': boolean',
152
+ ':boolean',
153
+ ': void',
154
+ ':void',
155
+ ': any',
156
+ ':any',
157
+ ': unknown',
158
+ ':unknown',
159
+ ': never',
160
+ ':never',
161
+ ].some((hint) => lower.includes(hint)),
162
+ },
163
+ },
164
+ {
165
+ language: 'rust',
166
+ pattern: {
167
+ regex: /\b(?:fn|impl|struct|enum)\b/,
168
+ keywords: ['let mut'],
169
+ custom: (_, lower) => lower.includes('use ') && lower.includes('::'),
170
+ },
171
+ },
172
+ {
173
+ language: 'javascript',
174
+ pattern: {
175
+ regex: /\b(?:const|let|var|function|class|async|await|export|import)\b/,
176
+ },
177
+ },
178
+ {
179
+ language: 'python',
180
+ pattern: {
181
+ regex: /\b(?:def|class|import|from)\b/,
182
+ keywords: ['print(', '__name__'],
183
+ },
184
+ },
185
+ {
186
+ language: 'bash',
187
+ pattern: {
188
+ custom: (code) => detectBashIndicators(code),
189
+ },
190
+ },
191
+ {
192
+ language: 'css',
193
+ pattern: {
194
+ regex: /@media|@import|@keyframes/,
195
+ custom: (code) => detectCssStructure(code),
196
+ },
197
+ },
198
+ {
199
+ language: 'html',
200
+ pattern: {
201
+ keywords: [
202
+ '<!doctype',
203
+ '<html',
204
+ '<head',
205
+ '<body',
206
+ '<div',
207
+ '<span',
208
+ '<p',
209
+ '<a',
210
+ '<script',
211
+ '<style',
212
+ ],
213
+ },
214
+ },
215
+ {
216
+ language: 'json',
217
+ pattern: {
218
+ startsWith: ['{', '['],
219
+ },
220
+ },
221
+ {
222
+ language: 'yaml',
223
+ pattern: {
224
+ custom: (code) => detectYamlStructure(code),
225
+ },
226
+ },
227
+ {
228
+ language: 'sql',
229
+ pattern: {
230
+ wordBoundary: [
231
+ 'select',
232
+ 'insert',
233
+ 'update',
234
+ 'delete',
235
+ 'create',
236
+ 'alter',
237
+ 'drop',
238
+ ],
239
+ },
240
+ },
241
+ {
242
+ language: 'go',
243
+ pattern: {
244
+ wordBoundary: ['package', 'func'],
245
+ keywords: ['import "'],
246
+ },
247
+ },
248
+ ];
249
+ function matchesLanguagePattern(code, lower, pattern) {
250
+ if (pattern.keywords?.some((kw) => lower.includes(kw)))
251
+ return true;
252
+ if (pattern.wordBoundary?.some((w) => containsWord(lower, w)))
253
+ return true;
254
+ if (pattern.regex?.test(lower))
255
+ return true;
256
+ if (pattern.startsWith) {
257
+ const trimmed = code.trimStart();
258
+ if (pattern.startsWith.some((prefix) => trimmed.startsWith(prefix)))
259
+ return true;
260
+ }
261
+ if (pattern.custom?.(code, lower))
262
+ return true;
263
+ return false;
264
+ }
265
+ /**
266
+ * Detect programming language from code content using heuristics.
267
+ */
268
+ export function detectLanguageFromCode(code) {
269
+ const lower = code.toLowerCase();
270
+ for (const { language, pattern } of LANGUAGE_PATTERNS) {
271
+ if (matchesLanguagePattern(code, lower, pattern))
272
+ return language;
273
+ }
274
+ return undefined;
275
+ }
276
+ /**
277
+ * Resolve language from HTML attributes (class name and data-language).
278
+ */
279
+ export function resolveLanguageFromAttributes(className, dataLang) {
280
+ const classMatch = extractLanguageFromClassName(className);
281
+ return classMatch ?? resolveLanguageFromDataAttribute(dataLang);
282
+ }
283
+ //# sourceMappingURL=language-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-detection.js","sourceRoot":"","sources":["../src/language-detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Markdown cleanup utilities for post-processing converted content.
3
+ *
4
+ * Goals:
5
+ * - Never mutate fenced code blocks (``` / ~~~) content.
6
+ * - Keep rules localized and readable.
7
+ * - Avoid multi-pass regexes that accidentally hit code blocks.
8
+ */
9
+ /**
10
+ * Clean up common markdown artifacts and formatting issues.
11
+ * IMPORTANT: All rules are applied ONLY outside fenced code blocks.
12
+ */
13
+ export declare function cleanupMarkdownArtifacts(content: string): string;
14
+ /**
15
+ * Promote standalone lines that look like headings to proper markdown headings.
16
+ * Fence-aware: never modifies content inside fenced code blocks.
17
+ */
18
+ export declare function promoteOrphanHeadings(markdown: string): string;
19
+ //# sourceMappingURL=markdown-cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-cleanup.d.ts","sourceRoot":"","sources":["../src/markdown-cleanup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmNH;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkBhE;AA6ED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAqB9D"}
@@ -0,0 +1,283 @@
1
+ /**
2
+ * Markdown cleanup utilities for post-processing converted content.
3
+ *
4
+ * Goals:
5
+ * - Never mutate fenced code blocks (``` / ~~~) content.
6
+ * - Keep rules localized and readable.
7
+ * - Avoid multi-pass regexes that accidentally hit code blocks.
8
+ */
9
+ // ─────────────────────────────────────────────────────────────────────────────
10
+ // Fence state helpers
11
+ // ─────────────────────────────────────────────────────────────────────────────
12
+ function isFenceStart(line) {
13
+ const trimmed = line.trimStart();
14
+ return trimmed.startsWith('```') || trimmed.startsWith('~~~');
15
+ }
16
+ function extractFenceMarker(line) {
17
+ const trimmed = line.trimStart();
18
+ const match = /^(`{3,}|~{3,})/.exec(trimmed);
19
+ return match?.[1] ?? '```';
20
+ }
21
+ function isFenceEnd(line, marker) {
22
+ const trimmed = line.trimStart();
23
+ return (trimmed.startsWith(marker) && trimmed.slice(marker.length).trim() === '');
24
+ }
25
+ function initialFenceState() {
26
+ return { inFence: false, marker: '' };
27
+ }
28
+ function advanceFenceState(line, state) {
29
+ if (!state.inFence && isFenceStart(line)) {
30
+ state.inFence = true;
31
+ state.marker = extractFenceMarker(line);
32
+ return;
33
+ }
34
+ if (state.inFence && isFenceEnd(line, state.marker)) {
35
+ state.inFence = false;
36
+ state.marker = '';
37
+ }
38
+ }
39
+ // ─────────────────────────────────────────────────────────────────────────────
40
+ // Segment utilities
41
+ // ─────────────────────────────────────────────────────────────────────────────
42
+ /**
43
+ * Split markdown into segments where each segment is either fully inside
44
+ * a fenced block (including the fence lines), or fully outside.
45
+ */
46
+ function splitByFences(content) {
47
+ const lines = content.split('\n');
48
+ const segments = [];
49
+ const state = initialFenceState();
50
+ let current = [];
51
+ let currentIsFence = false;
52
+ for (const line of lines) {
53
+ // Transition into fence: flush outside segment first.
54
+ if (!state.inFence && isFenceStart(line)) {
55
+ if (current.length > 0) {
56
+ segments.push({ content: current.join('\n'), inFence: currentIsFence });
57
+ current = [];
58
+ }
59
+ currentIsFence = true;
60
+ current.push(line);
61
+ advanceFenceState(line, state);
62
+ continue;
63
+ }
64
+ current.push(line);
65
+ const wasInFence = state.inFence;
66
+ advanceFenceState(line, state);
67
+ // Transition out of fence: flush fence segment.
68
+ if (wasInFence && !state.inFence) {
69
+ segments.push({ content: current.join('\n'), inFence: true });
70
+ current = [];
71
+ currentIsFence = false;
72
+ }
73
+ }
74
+ if (current.length > 0) {
75
+ segments.push({ content: current.join('\n'), inFence: currentIsFence });
76
+ }
77
+ return segments;
78
+ }
79
+ /**
80
+ * Apply a transformation function only to non-fenced content.
81
+ */
82
+ function mapOutsideFences(content, transform) {
83
+ const segments = splitByFences(content);
84
+ return segments
85
+ .map((seg) => (seg.inFence ? seg.content : transform(seg.content)))
86
+ .join('\n');
87
+ }
88
+ // ─────────────────────────────────────────────────────────────────────────────
89
+ // Cleanup rules (OUTSIDE fences only)
90
+ // ─────────────────────────────────────────────────────────────────────────────
91
+ function removeEmptyHeadings(text) {
92
+ return text.replace(/^#{1,6}[ \t\u00A0]*$\r?\n?/gm, '');
93
+ }
94
+ function fixOrphanHeadings(text) {
95
+ // Pattern: hashes on their own line, blank line, then a "heading-like" line.
96
+ return text.replace(/^(.*?)(#{1,6})\s*(?:\r?\n){2}([A-Z][^\r\n]+?)(?:\r?\n)/gm, (_match, prefix, hashes, heading) => {
97
+ if (heading.length > 150)
98
+ return _match;
99
+ const trimmedPrefix = prefix.trim();
100
+ if (trimmedPrefix === '') {
101
+ return `${hashes} ${heading}\n\n`;
102
+ }
103
+ return `${trimmedPrefix}\n\n${hashes} ${heading}\n\n`;
104
+ });
105
+ }
106
+ function removeSkipLinksAndEmptyAnchors(text) {
107
+ const zeroWidthAnchorLink = /\[(?:\s|\u200B)*\]\(#[^)]*\)\s*/g;
108
+ return text
109
+ .replace(zeroWidthAnchorLink, '')
110
+ .replace(/^\[Skip to (?:main )?content\]\(#[^)]*\)\s*$/gim, '')
111
+ .replace(/^\[Skip to (?:main )?navigation\]\(#[^)]*\)\s*$/gim, '')
112
+ .replace(/^\[Skip link\]\(#[^)]*\)\s*$/gim, '');
113
+ }
114
+ function ensureBlankLineAfterHeadings(text) {
115
+ // Heading followed immediately by a fence marker
116
+ text = text.replace(/(^#{1,6}\s+\w+)```/gm, '$1\n\n```');
117
+ // Heuristic: Some converters jam words together after a heading
118
+ text = text.replace(/(^#{1,6}\s+\w*[A-Z])([A-Z][a-z])/gm, '$1\n\n$2');
119
+ // Any heading line should be followed by a blank line before body
120
+ return text.replace(/(^#{1,6}\s[^\n]*)\n([^\n])/gm, '$1\n\n$2');
121
+ }
122
+ /**
123
+ * Remove markdown TOC blocks of the form:
124
+ * - [Title](#anchor)
125
+ * outside fenced code blocks.
126
+ */
127
+ function removeTocBlocks(text) {
128
+ const tocLine = /^- \[[^\]]+\]\(#[^)]+\)\s*$/;
129
+ const lines = text.split('\n');
130
+ const out = [];
131
+ let skipping = false;
132
+ for (let i = 0; i < lines.length; i += 1) {
133
+ const line = lines[i] ?? '';
134
+ const prev = i > 0 ? (lines[i - 1] ?? '') : '';
135
+ const next = i < lines.length - 1 ? (lines[i + 1] ?? '') : '';
136
+ if (tocLine.test(line)) {
137
+ const prevIsToc = tocLine.test(prev) || prev.trim() === '';
138
+ const nextIsToc = tocLine.test(next) || next.trim() === '';
139
+ if (prevIsToc || nextIsToc) {
140
+ skipping = true;
141
+ continue;
142
+ }
143
+ }
144
+ if (skipping) {
145
+ if (line.trim() === '') {
146
+ skipping = false;
147
+ }
148
+ continue;
149
+ }
150
+ out.push(line);
151
+ }
152
+ return out.join('\n');
153
+ }
154
+ function tidyLinksAndEscapes(text) {
155
+ return text
156
+ .replace(/\]\(([^)]+)\)\[/g, ']($1)\n\n[')
157
+ .replace(/^Was this page helpful\??\s*$/gim, '')
158
+ .replace(/(`[^`]+`)\s*\\-\s*/g, '$1 - ')
159
+ .replace(/\\([[]])/g, '$1');
160
+ }
161
+ function normalizeListsAndSpacing(text) {
162
+ // Ensure blank line before list starts (bullet/ordered)
163
+ text = text.replace(/([^\n])\n([-*+] )/g, '$1\n\n$2');
164
+ text = text.replace(/(\S)\n(\d+\. )/g, '$1\n\n$2');
165
+ // Collapse excessive blank lines
166
+ return text.replace(/\n{3,}/g, '\n\n');
167
+ }
168
+ // ─────────────────────────────────────────────────────────────────────────────
169
+ // Public API
170
+ // ─────────────────────────────────────────────────────────────────────────────
171
+ /**
172
+ * Clean up common markdown artifacts and formatting issues.
173
+ * IMPORTANT: All rules are applied ONLY outside fenced code blocks.
174
+ */
175
+ export function cleanupMarkdownArtifacts(content) {
176
+ if (!content)
177
+ return '';
178
+ const cleaned = mapOutsideFences(content, (outside) => {
179
+ let text = outside;
180
+ text = fixOrphanHeadings(text);
181
+ text = removeEmptyHeadings(text);
182
+ text = removeSkipLinksAndEmptyAnchors(text);
183
+ text = ensureBlankLineAfterHeadings(text);
184
+ text = removeTocBlocks(text);
185
+ text = tidyLinksAndEscapes(text);
186
+ text = normalizeListsAndSpacing(text);
187
+ return text;
188
+ });
189
+ return cleaned.trim();
190
+ }
191
+ // ─────────────────────────────────────────────────────────────────────────────
192
+ // Heading Promotion (fence-aware)
193
+ // ─────────────────────────────────────────────────────────────────────────────
194
+ const HEADING_KEYWORDS = new Set([
195
+ 'overview',
196
+ 'introduction',
197
+ 'summary',
198
+ 'conclusion',
199
+ 'prerequisites',
200
+ 'requirements',
201
+ 'installation',
202
+ 'configuration',
203
+ 'usage',
204
+ 'features',
205
+ 'limitations',
206
+ 'troubleshooting',
207
+ 'faq',
208
+ 'resources',
209
+ 'references',
210
+ 'changelog',
211
+ 'license',
212
+ 'acknowledgments',
213
+ 'appendix',
214
+ ]);
215
+ function isLikelyHeadingLine(line) {
216
+ const trimmed = line.trim();
217
+ if (!trimmed || trimmed.length > 80)
218
+ return false;
219
+ if (/^#{1,6}\s/.test(trimmed))
220
+ return false;
221
+ if (/^[-*+•]\s/.test(trimmed) || /^\d+\.\s/.test(trimmed))
222
+ return false;
223
+ if (/[.!?]$/.test(trimmed))
224
+ return false;
225
+ if (/^\[.*\]\(.*\)$/.test(trimmed))
226
+ return false;
227
+ if (/^(?:example|note|tip|warning|important|caution):\s+\S/i.test(trimmed)) {
228
+ return true;
229
+ }
230
+ const words = trimmed.split(/\s+/);
231
+ if (words.length >= 2 && words.length <= 6) {
232
+ const isTitleCase = words.every((w) => /^[A-Z][a-z]*$/.test(w) || /^(?:and|or|the|of|in|for|to|a)$/i.test(w));
233
+ if (isTitleCase)
234
+ return true;
235
+ }
236
+ if (words.length === 1) {
237
+ const lower = trimmed.toLowerCase();
238
+ if (HEADING_KEYWORDS.has(lower) && /^[A-Z]/.test(trimmed))
239
+ return true;
240
+ }
241
+ return false;
242
+ }
243
+ function shouldPromoteToHeading(line, prevLine) {
244
+ const isPrecededByBlank = prevLine.trim() === '';
245
+ if (!isPrecededByBlank)
246
+ return false;
247
+ return isLikelyHeadingLine(line);
248
+ }
249
+ function formatAsHeading(line) {
250
+ const trimmed = line.trim();
251
+ const isExample = /^example:\s/i.test(trimmed);
252
+ const prefix = isExample ? '### ' : '## ';
253
+ return prefix + trimmed;
254
+ }
255
+ function processNonFencedLine(line, prevLine) {
256
+ if (shouldPromoteToHeading(line, prevLine)) {
257
+ return formatAsHeading(line);
258
+ }
259
+ return line;
260
+ }
261
+ /**
262
+ * Promote standalone lines that look like headings to proper markdown headings.
263
+ * Fence-aware: never modifies content inside fenced code blocks.
264
+ */
265
+ export function promoteOrphanHeadings(markdown) {
266
+ if (!markdown)
267
+ return '';
268
+ const lines = markdown.split('\n');
269
+ const result = [];
270
+ const state = initialFenceState();
271
+ for (let i = 0; i < lines.length; i += 1) {
272
+ const line = lines[i] ?? '';
273
+ const prevLine = i > 0 ? (lines[i - 1] ?? '') : '';
274
+ if (state.inFence || isFenceStart(line)) {
275
+ result.push(line);
276
+ advanceFenceState(line, state);
277
+ continue;
278
+ }
279
+ result.push(processNonFencedLine(line, prevLine));
280
+ }
281
+ return result.join('\n');
282
+ }
283
+ //# sourceMappingURL=markdown-cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-cleanup.js","sourceRoot":"","sources":["../src/markdown-cleanup.ts"],"names":[],"mappings":"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"}
@@ -13,5 +13,6 @@ export declare function logDebug(message: string, meta?: LogMetadata): void;
13
13
  export declare function logWarn(message: string, meta?: LogMetadata): void;
14
14
  export declare function logError(message: string, error?: Error | LogMetadata): void;
15
15
  export declare function redactUrl(rawUrl: string): string;
16
+ export declare function redactHeaders(headers: Record<string, unknown>): Record<string, unknown>;
16
17
  export {};
17
18
  //# sourceMappingURL=observability.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElD,UAAU,cAAc;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAEH;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnD;AAyCD,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAEjE;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAElE;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAEjE;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,IAAI,CAM3E;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWhD"}
1
+ {"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElD,UAAU,cAAc;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,CAEH;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnD;AAyCD,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAEjE;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAElE;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAEjE;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,IAAI,CAM3E;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWhD;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB"}
@@ -73,4 +73,14 @@ export function redactUrl(rawUrl) {
73
73
  return rawUrl;
74
74
  }
75
75
  }
76
+ export function redactHeaders(headers) {
77
+ const redacted = { ...headers };
78
+ const sensitiveKeys = ['authorization', 'cookie', 'set-cookie', 'x-api-key'];
79
+ for (const key of Object.keys(redacted)) {
80
+ if (sensitiveKeys.includes(key.toLowerCase())) {
81
+ redacted[key] = '[REDACTED]';
82
+ }
83
+ }
84
+ return redacted;
85
+ }
76
86
  //# sourceMappingURL=observability.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"observability.js","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observability.js","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"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"}