@utilix-tech/sdk 0.95.0 → 0.97.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/dist/index.cjs CHANGED
@@ -2330,6 +2330,7 @@ __export(text_exports, {
2330
2330
  detectDelimiter: () => detectDelimiter,
2331
2331
  detectFillerWords: () => detectFillerWords,
2332
2332
  detectPassiveVoice: () => detectPassiveVoice,
2333
+ detectWeaselWords: () => detectWeaselWords,
2333
2334
  detectWordyPhrases: () => detectWordyPhrases,
2334
2335
  diffLines: () => diffLines,
2335
2336
  diffLinesSimple: () => diffLinesSimple,
@@ -5631,12 +5632,69 @@ function checkAcronymExpansion(text) {
5631
5632
  issues.sort((a, b) => a.index - b.index);
5632
5633
  return { acronyms, issues };
5633
5634
  }
5635
+ var WEASEL_PHRASES = [
5636
+ "many experts believe",
5637
+ "some experts say",
5638
+ "experts agree",
5639
+ "critics argue",
5640
+ "studies show",
5641
+ "studies have shown",
5642
+ "research shows",
5643
+ "research suggests",
5644
+ "it is widely believed",
5645
+ "it is widely known",
5646
+ "it is widely regarded",
5647
+ "it is generally accepted",
5648
+ "it is often said",
5649
+ "it has been suggested",
5650
+ "it is said that",
5651
+ "some say",
5652
+ "some people believe",
5653
+ "some people think",
5654
+ "many believe",
5655
+ "many people think",
5656
+ "many claim",
5657
+ "observers note",
5658
+ "sources say",
5659
+ "according to some",
5660
+ "widely regarded as",
5661
+ "many consider",
5662
+ "some scientists believe",
5663
+ "some argue",
5664
+ "reportedly",
5665
+ "allegedly"
5666
+ ];
5667
+ function _weaselRegex(phrase) {
5668
+ const tokens = phrase.split(/\s+/).map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
5669
+ return new RegExp("\\b" + tokens.join("\\s+") + "\\b", "gi");
5670
+ }
5671
+ function detectWeaselWords(text) {
5672
+ const totalWords = (text.match(/[A-Za-z0-9']+/g) ?? []).length;
5673
+ const matches = [];
5674
+ for (const phrase of WEASEL_PHRASES) {
5675
+ const re = _weaselRegex(phrase);
5676
+ const indices = [];
5677
+ let m;
5678
+ while ((m = re.exec(text)) !== null) {
5679
+ indices.push(m.index);
5680
+ if (m.index === re.lastIndex) re.lastIndex++;
5681
+ }
5682
+ if (indices.length > 0) {
5683
+ matches.push({ phrase, count: indices.length, indices });
5684
+ }
5685
+ }
5686
+ matches.sort((a, b) => b.count - a.count || a.phrase.localeCompare(b.phrase));
5687
+ const totalMatches = matches.reduce((s, x) => s + x.count, 0);
5688
+ const density = totalWords > 0 ? Math.round(totalMatches / totalWords * 1e3) / 10 : 0;
5689
+ return { totalWords, totalMatches, density, matches };
5690
+ }
5634
5691
 
5635
5692
  // src/tools/data.ts
5636
5693
  var data_exports = {};
5637
5694
  __export(data_exports, {
5638
5695
  alignMarkdownTables: () => alignMarkdownTables,
5639
5696
  analyzeCaptionSpeed: () => analyzeCaptionSpeed,
5697
+ auditMarkdownImageAltText: () => auditMarkdownImageAltText,
5640
5698
  calculateMarkdownTaskListProgress: () => calculateMarkdownTaskListProgress,
5641
5699
  checkMarkdownInternalLinks: () => checkMarkdownInternalLinks,
5642
5700
  convertSubtitles: () => convertSubtitles,
@@ -7853,6 +7911,90 @@ function summarizeCsvColumnStats(input, options) {
7853
7911
  });
7854
7912
  return { columns, rowCount: parsed.rows.length };
7855
7913
  }
7914
+ var MARKDOWN_IMAGE_RE = /!\[([^\]]*)\]\(([^)\s]+)(?:\s+"[^"]*")?\)/g;
7915
+ var MARKDOWN_IMAGE_GENERIC_ALT_WORDS = /* @__PURE__ */ new Set([
7916
+ "image",
7917
+ "picture",
7918
+ "photo",
7919
+ "photograph",
7920
+ "pic",
7921
+ "img",
7922
+ "graphic",
7923
+ "screenshot",
7924
+ "icon",
7925
+ "logo"
7926
+ ]);
7927
+ var MARKDOWN_IMAGE_REDUNDANT_PREFIX_RE = /^(image|picture|photo|photograph)\s+of\s+/i;
7928
+ var MARKDOWN_IMAGE_FILENAME_EXT_RE = /\.(png|jpe?g|gif|svg|webp|bmp|avif|tiff?)$/i;
7929
+ function markdownImageBasenameWithoutExt(src) {
7930
+ const withoutQuery = src.split(/[?#]/)[0];
7931
+ const file = withoutQuery.split("/").pop() ?? withoutQuery;
7932
+ return file.replace(MARKDOWN_IMAGE_FILENAME_EXT_RE, "");
7933
+ }
7934
+ function auditMarkdownImageAltText(markdown) {
7935
+ if (typeof markdown !== "string") return { error: "markdown must be a string" };
7936
+ const lines = markdown.replace(/\r\n/g, "\n").split("\n");
7937
+ const images = [];
7938
+ const issues = [];
7939
+ let inFence = false;
7940
+ let fenceMarker = "";
7941
+ lines.forEach((line, idx) => {
7942
+ const fenceMatch = line.match(/^\s*(```+|~~~+)/);
7943
+ if (fenceMatch) {
7944
+ if (!inFence) {
7945
+ inFence = true;
7946
+ fenceMarker = fenceMatch[1][0];
7947
+ } else if (fenceMatch[1][0] === fenceMarker) {
7948
+ inFence = false;
7949
+ }
7950
+ return;
7951
+ }
7952
+ if (inFence) return;
7953
+ const lineNo = idx + 1;
7954
+ MARKDOWN_IMAGE_RE.lastIndex = 0;
7955
+ let match;
7956
+ while ((match = MARKDOWN_IMAGE_RE.exec(line)) !== null) {
7957
+ const alt = match[1].trim();
7958
+ const src = match[2];
7959
+ images.push({ line: lineNo, alt, src });
7960
+ if (alt === "") {
7961
+ issues.push({
7962
+ line: lineNo,
7963
+ type: "empty-alt",
7964
+ src,
7965
+ message: `Image at line ${lineNo} has no alt text (src: ${src}). If this image is purely decorative, an intentionally empty alt is fine; otherwise it needs a description.`
7966
+ });
7967
+ continue;
7968
+ }
7969
+ if (MARKDOWN_IMAGE_GENERIC_ALT_WORDS.has(alt.toLowerCase())) {
7970
+ issues.push({
7971
+ line: lineNo,
7972
+ type: "generic-alt",
7973
+ src,
7974
+ message: `Alt text "${alt}" at line ${lineNo} is a generic placeholder and doesn't describe the image's content.`
7975
+ });
7976
+ }
7977
+ if (MARKDOWN_IMAGE_REDUNDANT_PREFIX_RE.test(alt)) {
7978
+ issues.push({
7979
+ line: lineNo,
7980
+ type: "redundant-prefix",
7981
+ src,
7982
+ message: `Alt text "${alt}" at line ${lineNo} starts with a redundant prefix; screen readers already announce images, so "${alt.replace(MARKDOWN_IMAGE_REDUNDANT_PREFIX_RE, "")}" reads better.`
7983
+ });
7984
+ }
7985
+ const baseName = markdownImageBasenameWithoutExt(src);
7986
+ if (MARKDOWN_IMAGE_FILENAME_EXT_RE.test(alt) || baseName !== "" && alt.toLowerCase() === baseName.toLowerCase()) {
7987
+ issues.push({
7988
+ line: lineNo,
7989
+ type: "filename-as-alt",
7990
+ src,
7991
+ message: `Alt text "${alt}" at line ${lineNo} looks like the image's own filename rather than a description.`
7992
+ });
7993
+ }
7994
+ }
7995
+ });
7996
+ return { images, issues, imageCount: images.length };
7997
+ }
7856
7998
 
7857
7999
  // src/tools/generators.ts
7858
8000
  var generators_exports = {};
@@ -9348,6 +9490,7 @@ __export(units_exports, {
9348
9490
  calculateMovingAverages: () => calculateMovingAverages,
9349
9491
  calculatePaybackPeriod: () => calculatePaybackPeriod,
9350
9492
  calculatePercentageChange: () => calculatePercentageChange,
9493
+ calculatePositionSize: () => calculatePositionSize,
9351
9494
  calculateRealRateOfReturn: () => calculateRealRateOfReturn,
9352
9495
  calculateRequiredBandwidth: () => calculateRequiredBandwidth,
9353
9496
  calculateRoi: () => calculateRoi,
@@ -9418,6 +9561,7 @@ __export(units_exports, {
9418
9561
  validateIban: () => validateIban,
9419
9562
  validateIsbn: () => validateIsbn,
9420
9563
  validateIsin: () => validateIsin,
9564
+ validateRoutingNumber: () => validateRoutingNumber,
9421
9565
  validateVin: () => validateVin,
9422
9566
  viewportToPx: () => viewportToPx
9423
9567
  });
@@ -12519,6 +12663,91 @@ function estimateAudioFileSize(input) {
12519
12663
  }
12520
12664
  return { error: 'mode must be "pcm" or "compressed"' };
12521
12665
  }
12666
+ var ABA_FEDERAL_RESERVE_BANKS = {
12667
+ 1: "Boston",
12668
+ 2: "New York",
12669
+ 3: "Philadelphia",
12670
+ 4: "Cleveland",
12671
+ 5: "Richmond",
12672
+ 6: "Atlanta",
12673
+ 7: "Chicago",
12674
+ 8: "St. Louis",
12675
+ 9: "Minneapolis",
12676
+ 10: "Kansas City",
12677
+ 11: "Dallas",
12678
+ 12: "San Francisco"
12679
+ };
12680
+ function abaDistrictAndType(prefix) {
12681
+ if (prefix >= 1 && prefix <= 12) {
12682
+ return { type: "primary", district: { code: prefix, bank: ABA_FEDERAL_RESERVE_BANKS[prefix] } };
12683
+ }
12684
+ if (prefix >= 21 && prefix <= 32) {
12685
+ const code = prefix - 20;
12686
+ return { type: "thrift", district: { code, bank: ABA_FEDERAL_RESERVE_BANKS[code] } };
12687
+ }
12688
+ if (prefix >= 61 && prefix <= 72) {
12689
+ const code = prefix - 60;
12690
+ return { type: "electronic", district: { code, bank: ABA_FEDERAL_RESERVE_BANKS[code] } };
12691
+ }
12692
+ if (prefix === 80) {
12693
+ return { type: "traveler-check", district: null };
12694
+ }
12695
+ return { type: "unknown", district: null };
12696
+ }
12697
+ function formatRoutingNumber(digits) {
12698
+ return `${digits.slice(0, 4)} ${digits.slice(4, 8)} ${digits.slice(8)}`;
12699
+ }
12700
+ function validateRoutingNumber(input) {
12701
+ if (!input || !input.trim()) return { error: "Input is empty" };
12702
+ const digits = input.replace(/[\s-]/g, "");
12703
+ if (!/^\d+$/.test(digits)) return { error: "Routing number must contain only digits, spaces, or hyphens" };
12704
+ if (digits.length !== 9) return { error: `Routing number length (${digits.length}) must be exactly 9 digits` };
12705
+ const d = digits.split("").map(Number);
12706
+ const sum = 3 * (d[0] + d[3] + d[6]) + 7 * (d[1] + d[4] + d[7]) + 1 * (d[2] + d[5] + d[8]);
12707
+ const checksumValid = sum % 10 === 0;
12708
+ const prefix = Number(digits.slice(0, 2));
12709
+ const { type, district } = abaDistrictAndType(prefix);
12710
+ return {
12711
+ valid: checksumValid,
12712
+ checksumValid,
12713
+ length: digits.length,
12714
+ formatted: formatRoutingNumber(digits),
12715
+ routingNumberType: type,
12716
+ federalReserveDistrict: district
12717
+ };
12718
+ }
12719
+ function calculatePositionSize(input) {
12720
+ const { accountSize, riskPercent, entryPrice, stopLossPrice, targetPrice } = input;
12721
+ if (!(accountSize > 0)) return { error: "accountSize must be greater than 0" };
12722
+ if (!(riskPercent > 0) || riskPercent > 100) return { error: "riskPercent must be greater than 0 and at most 100" };
12723
+ if (!(entryPrice > 0)) return { error: "entryPrice must be greater than 0" };
12724
+ if (!(stopLossPrice > 0)) return { error: "stopLossPrice must be greater than 0" };
12725
+ if (entryPrice === stopLossPrice) return { error: "entryPrice and stopLossPrice must differ" };
12726
+ if (targetPrice !== void 0 && !(targetPrice > 0)) return { error: "targetPrice must be greater than 0" };
12727
+ const direction = stopLossPrice < entryPrice ? "long" : "short";
12728
+ const riskAmount = accountSize * (riskPercent / 100);
12729
+ const perUnitRisk = Math.abs(entryPrice - stopLossPrice);
12730
+ const positionSizeUnits = Math.floor(riskAmount / perUnitRisk);
12731
+ const positionValue = positionSizeUnits * entryPrice;
12732
+ const dollarRisk = positionSizeUnits * perUnitRisk;
12733
+ let riskRewardRatio = null;
12734
+ let targetOnCorrectSide = null;
12735
+ if (targetPrice !== void 0) {
12736
+ const reward = Math.abs(targetPrice - entryPrice);
12737
+ riskRewardRatio = Math.round(reward / perUnitRisk * 100) / 100;
12738
+ targetOnCorrectSide = direction === "long" ? targetPrice > entryPrice : targetPrice < entryPrice;
12739
+ }
12740
+ return {
12741
+ direction,
12742
+ riskAmount: Math.round(riskAmount * 100) / 100,
12743
+ perUnitRisk: Math.round(perUnitRisk * 1e4) / 1e4,
12744
+ positionSizeUnits,
12745
+ positionValue: Math.round(positionValue * 100) / 100,
12746
+ dollarRisk: Math.round(dollarRisk * 100) / 100,
12747
+ riskRewardRatio,
12748
+ targetOnCorrectSide
12749
+ };
12750
+ }
12522
12751
 
12523
12752
  // src/tools/network.ts
12524
12753
  var network_exports = {};
package/dist/index.d.cts CHANGED
@@ -1,11 +1,11 @@
1
1
  export { j as json } from './json-Ca6gZCNB.cjs';
2
2
  export { e as encoding } from './encoding-Dk3wpmb3.cjs';
3
3
  export { h as hashing } from './hashing-CJjlvqS_.cjs';
4
- export { t as text } from './text-DOopHoK3.cjs';
5
- export { d as data } from './data-3qMdFIF5.cjs';
4
+ export { t as text } from './text-DFCNpyvH.cjs';
5
+ export { d as data } from './data-Dg5dEwWl.cjs';
6
6
  export { g as generators } from './generators-DAXXrMvG.cjs';
7
7
  export { t as time } from './time-VMAy_SrV.cjs';
8
- export { u as units } from './units-BBzv0VIt.cjs';
8
+ export { u as units } from './units-7rkeDBbW.cjs';
9
9
  export { n as network } from './network-B6fQrsCc.cjs';
10
10
  export { a as api } from './api-CQnIUrVB.cjs';
11
11
  export { c as code } from './code-CZHElFHu.cjs';
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  export { j as json } from './json-Ca6gZCNB.js';
2
2
  export { e as encoding } from './encoding-Dk3wpmb3.js';
3
3
  export { h as hashing } from './hashing-CJjlvqS_.js';
4
- export { t as text } from './text-DOopHoK3.js';
5
- export { d as data } from './data-3qMdFIF5.js';
4
+ export { t as text } from './text-DFCNpyvH.js';
5
+ export { d as data } from './data-Dg5dEwWl.js';
6
6
  export { g as generators } from './generators-DAXXrMvG.js';
7
7
  export { t as time } from './time-VMAy_SrV.js';
8
- export { u as units } from './units-BBzv0VIt.js';
8
+ export { u as units } from './units-7rkeDBbW.js';
9
9
  export { n as network } from './network-B6fQrsCc.js';
10
10
  export { a as api } from './api-CQnIUrVB.js';
11
11
  export { c as code } from './code-CZHElFHu.js';
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { media_exports as media } from './chunk-YSS4VVZU.js';
2
- export { units_exports as units } from './chunk-G5NUC5MV.js';
2
+ export { units_exports as units } from './chunk-NFTUG3XP.js';
3
3
  export { network_exports as network } from './chunk-K242OOF4.js';
4
4
  export { api_exports as api } from './chunk-U2HREMZU.js';
5
5
  export { code_exports as code } from './chunk-KRPIOHJ4.js';
@@ -10,8 +10,8 @@ export { ai_agent_exports as ai_agent } from './chunk-5VVC7BHS.js';
10
10
  export { json_exports as json } from './chunk-WUOZHCIC.js';
11
11
  export { encoding_exports as encoding } from './chunk-DOWQZUTP.js';
12
12
  export { hashing_exports as hashing } from './chunk-PET2CGTH.js';
13
- export { text_exports as text } from './chunk-YQJ7CEUL.js';
14
- export { data_exports as data } from './chunk-PEMPPDMM.js';
13
+ export { text_exports as text } from './chunk-2YWKRNDM.js';
14
+ export { data_exports as data } from './chunk-NTHUTIZH.js';
15
15
  export { generators_exports as generators } from './chunk-422ICOZX.js';
16
16
  export { time_exports as time } from './chunk-6EJVNQSY.js';
17
17
  import './chunk-MLKGABMK.js';
@@ -27,6 +27,7 @@
27
27
  * - emoji-lookup : searchEmoji, getEmojiByShortcode, getEmojiByChar, getEmojiByCategory, getEmojiCategories, EMOJI_TABLE
28
28
  * - em-dash-usage-checker: checkDashUsage
29
29
  * - acronym-expansion-checker: checkAcronymExpansion
30
+ * - weasel-word-detector: detectWeaselWords
30
31
  */
31
32
  interface WordCountResult {
32
33
  words: number;
@@ -517,6 +518,26 @@ interface AcronymCheckResult {
517
518
  * like "APIs" can be missed or misread.
518
519
  */
519
520
  declare function checkAcronymExpansion(text: string): AcronymCheckResult;
521
+ interface WeaselWordMatch {
522
+ phrase: string;
523
+ count: number;
524
+ indices: number[];
525
+ }
526
+ interface WeaselWordResult {
527
+ totalWords: number;
528
+ totalMatches: number;
529
+ density: number;
530
+ matches: WeaselWordMatch[];
531
+ }
532
+ /**
533
+ * Scan text for weasel words: vague hedging phrases that imply evidence
534
+ * or consensus without naming a checkable source ("studies show", "many
535
+ * experts believe", "it is widely known"). Dictionary-based heuristic
536
+ * over a curated phrase list, same shape as detectFillerWords: a flagged
537
+ * phrase is a candidate to replace with a named source or cut, not
538
+ * always wrong in context.
539
+ */
540
+ declare function detectWeaselWords(text: string): WeaselWordResult;
520
541
 
521
542
  type text_AcronymCheckResult = AcronymCheckResult;
522
543
  type text_AcronymIssue = AcronymIssue;
@@ -570,6 +591,8 @@ type text_StringDistanceMode = StringDistanceMode;
570
591
  type text_StringDistanceResult = StringDistanceResult;
571
592
  type text_TableOptions = TableOptions;
572
593
  type text_TextAnalysis = TextAnalysis;
594
+ type text_WeaselWordMatch = WeaselWordMatch;
595
+ type text_WeaselWordResult = WeaselWordResult;
573
596
  type text_WordCountResult = WordCountResult;
574
597
  type text_WordyPhraseMatch = WordyPhraseMatch;
575
598
  type text_WordyPhraseResult = WordyPhraseResult;
@@ -592,6 +615,7 @@ declare const text_csvToMarkdown: typeof csvToMarkdown;
592
615
  declare const text_detectDelimiter: typeof detectDelimiter;
593
616
  declare const text_detectFillerWords: typeof detectFillerWords;
594
617
  declare const text_detectPassiveVoice: typeof detectPassiveVoice;
618
+ declare const text_detectWeaselWords: typeof detectWeaselWords;
595
619
  declare const text_detectWordyPhrases: typeof detectWordyPhrases;
596
620
  declare const text_diffLines: typeof diffLines;
597
621
  declare const text_diffLinesSimple: typeof diffLinesSimple;
@@ -638,7 +662,7 @@ declare const text_textToMorse: typeof textToMorse;
638
662
  declare const text_unescapeString: typeof unescapeString;
639
663
  declare const text_wordFrequency: typeof wordFrequency;
640
664
  declare namespace text {
641
- export { type text_AcronymCheckResult as AcronymCheckResult, type text_AcronymIssue as AcronymIssue, type text_AcronymIssueType as AcronymIssueType, type text_AcronymUsage as AcronymUsage, type text_AsciiFont as AsciiFont, type text_AsciiOptions as AsciiOptions, text_CASE_FORMATS as CASE_FORMATS, type text_CaseFormat as CaseFormat, type text_ConvertOptions as ConvertOptions, text_DEFAULT_CONVERT_OPTIONS as DEFAULT_CONVERT_OPTIONS, type text_DashIssue as DashIssue, type text_DashIssueType as DashIssueType, type text_DashUsageResult as DashUsageResult, type text_DiffFile as DiffFile, type text_DiffHunk as DiffHunk, type text_DiffLine as DiffLine, type text_DiffResult as DiffResult, type text_DiffType as DiffType, type text_DiffViewerLine as DiffViewerLine, text_EMOJI_TABLE as EMOJI_TABLE, text_ESCAPE_MODES as ESCAPE_MODES, type text_EmojiEntry as EmojiEntry, type text_EscapeMode as EscapeMode, type text_FillerCategory as FillerCategory, type text_FillerMatch as FillerMatch, type text_FillerWordResult as FillerWordResult, type text_KeywordDensityEntry as KeywordDensityEntry, type text_KeywordDensityOptions as KeywordDensityOptions, type text_KeywordDensityResult as KeywordDensityResult, text_LINE_OPS as LINE_OPS, type text_LineOp as LineOp, type text_LineType as LineType, type text_LoremUnit as LoremUnit, text_MORSE_CODE as MORSE_CODE, type text_MarkdownResult as MarkdownResult, type text_MorseOptions as MorseOptions, type text_OxfordCommaInstance as OxfordCommaInstance, type text_OxfordCommaResult as OxfordCommaResult, type text_ParsedDiff as ParsedDiff, type text_ParsedTable as ParsedTable, type text_PassiveVoiceMatch as PassiveVoiceMatch, type text_PassiveVoiceResult as PassiveVoiceResult, type text_PassiveVoiceSentence as PassiveVoiceSentence, type text_ReadabilityResult as ReadabilityResult, type text_ReadabilityScore as ReadabilityScore, type text_SentenceLengthBucket as SentenceLengthBucket, type text_SentenceLengthDistribution as SentenceLengthDistribution, type text_SlugSeparator as SlugSeparator, type text_StringDistanceMode as StringDistanceMode, type text_StringDistanceResult as StringDistanceResult, type text_TableOptions as TableOptions, type text_TextAnalysis as TextAnalysis, type text_WordCountResult as WordCountResult, type text_WordyPhraseMatch as WordyPhraseMatch, type text_WordyPhraseResult as WordyPhraseResult, text_addBorder as addBorder, text_analyzeKeywordDensity as analyzeKeywordDensity, text_analyzeSentenceLengths as analyzeSentenceLengths, text_analyzeText as analyzeText, text_applyOp as applyOp, text_applyOps as applyOps, text_calculateStringDistance as calculateStringDistance, text_centerText as centerText, text_checkAcronymExpansion as checkAcronymExpansion, text_checkDashUsage as checkDashUsage, text_checkOxfordCommaConsistency as checkOxfordCommaConsistency, text_convertAll as convertAll, text_convertCase as convertCase, text_countWords as countWords, text_csvToHtml as csvToHtml, text_csvToMarkdown as csvToMarkdown, text_detectDelimiter as detectDelimiter, text_detectFillerWords as detectFillerWords, text_detectPassiveVoice as detectPassiveVoice, text_detectWordyPhrases as detectWordyPhrases, text_diffLines as diffLines, text_diffLinesSimple as diffLinesSimple, text_diffStats as diffStats, text_escapeAll as escapeAll, text_escapeString as escapeString, text_extractHeadings as extractHeadings, text_formatReadingTime as formatReadingTime, text_generate as generate, text_generateDiff as generateDiff, text_generateHtmlTable as generateHtmlTable, text_generateMarkdownTable as generateMarkdownTable, text_generateParagraphs as generateParagraphs, text_generateSentences as generateSentences, text_generateWords as generateWords, text_getAvailableFonts as getAvailableFonts, text_getEmojiByCategory as getEmojiByCategory, text_getEmojiByChar as getEmojiByChar, text_getEmojiByShortcode as getEmojiByShortcode, text_getEmojiCategories as getEmojiCategories, text_getMorseForChar as getMorseForChar, text_getMorseTiming as getMorseTiming, text_htmlToMarkdown as htmlToMarkdown, text_isValidMorse as isValidMorse, text_markdownToHtml as markdownToHtml, text_morseToText as morseToText, text_numberToOrdinal as numberToOrdinal, text_numberToRoman as numberToRoman, text_numberToWords as numberToWords, text_ordinalWords as ordinalWords, text_parseDiff as parseDiff, text_parseTableData as parseTableData, text_readabilityScore as readabilityScore, text_renderMarkdown as renderMarkdown, text_romanToNumber as romanToNumber, text_scoreReadability as scoreReadability, text_searchEmoji as searchEmoji, text_sentenceCount as sentenceCount, text_slugify as slugify, text_slugifyAll as slugifyAll, text_syllableCount as syllableCount, text_textToAscii as textToAscii, text_textToMorse as textToMorse, text_unescapeString as unescapeString, text_wordFrequency as wordFrequency };
665
+ export { type text_AcronymCheckResult as AcronymCheckResult, type text_AcronymIssue as AcronymIssue, type text_AcronymIssueType as AcronymIssueType, type text_AcronymUsage as AcronymUsage, type text_AsciiFont as AsciiFont, type text_AsciiOptions as AsciiOptions, text_CASE_FORMATS as CASE_FORMATS, type text_CaseFormat as CaseFormat, type text_ConvertOptions as ConvertOptions, text_DEFAULT_CONVERT_OPTIONS as DEFAULT_CONVERT_OPTIONS, type text_DashIssue as DashIssue, type text_DashIssueType as DashIssueType, type text_DashUsageResult as DashUsageResult, type text_DiffFile as DiffFile, type text_DiffHunk as DiffHunk, type text_DiffLine as DiffLine, type text_DiffResult as DiffResult, type text_DiffType as DiffType, type text_DiffViewerLine as DiffViewerLine, text_EMOJI_TABLE as EMOJI_TABLE, text_ESCAPE_MODES as ESCAPE_MODES, type text_EmojiEntry as EmojiEntry, type text_EscapeMode as EscapeMode, type text_FillerCategory as FillerCategory, type text_FillerMatch as FillerMatch, type text_FillerWordResult as FillerWordResult, type text_KeywordDensityEntry as KeywordDensityEntry, type text_KeywordDensityOptions as KeywordDensityOptions, type text_KeywordDensityResult as KeywordDensityResult, text_LINE_OPS as LINE_OPS, type text_LineOp as LineOp, type text_LineType as LineType, type text_LoremUnit as LoremUnit, text_MORSE_CODE as MORSE_CODE, type text_MarkdownResult as MarkdownResult, type text_MorseOptions as MorseOptions, type text_OxfordCommaInstance as OxfordCommaInstance, type text_OxfordCommaResult as OxfordCommaResult, type text_ParsedDiff as ParsedDiff, type text_ParsedTable as ParsedTable, type text_PassiveVoiceMatch as PassiveVoiceMatch, type text_PassiveVoiceResult as PassiveVoiceResult, type text_PassiveVoiceSentence as PassiveVoiceSentence, type text_ReadabilityResult as ReadabilityResult, type text_ReadabilityScore as ReadabilityScore, type text_SentenceLengthBucket as SentenceLengthBucket, type text_SentenceLengthDistribution as SentenceLengthDistribution, type text_SlugSeparator as SlugSeparator, type text_StringDistanceMode as StringDistanceMode, type text_StringDistanceResult as StringDistanceResult, type text_TableOptions as TableOptions, type text_TextAnalysis as TextAnalysis, type text_WeaselWordMatch as WeaselWordMatch, type text_WeaselWordResult as WeaselWordResult, type text_WordCountResult as WordCountResult, type text_WordyPhraseMatch as WordyPhraseMatch, type text_WordyPhraseResult as WordyPhraseResult, text_addBorder as addBorder, text_analyzeKeywordDensity as analyzeKeywordDensity, text_analyzeSentenceLengths as analyzeSentenceLengths, text_analyzeText as analyzeText, text_applyOp as applyOp, text_applyOps as applyOps, text_calculateStringDistance as calculateStringDistance, text_centerText as centerText, text_checkAcronymExpansion as checkAcronymExpansion, text_checkDashUsage as checkDashUsage, text_checkOxfordCommaConsistency as checkOxfordCommaConsistency, text_convertAll as convertAll, text_convertCase as convertCase, text_countWords as countWords, text_csvToHtml as csvToHtml, text_csvToMarkdown as csvToMarkdown, text_detectDelimiter as detectDelimiter, text_detectFillerWords as detectFillerWords, text_detectPassiveVoice as detectPassiveVoice, text_detectWeaselWords as detectWeaselWords, text_detectWordyPhrases as detectWordyPhrases, text_diffLines as diffLines, text_diffLinesSimple as diffLinesSimple, text_diffStats as diffStats, text_escapeAll as escapeAll, text_escapeString as escapeString, text_extractHeadings as extractHeadings, text_formatReadingTime as formatReadingTime, text_generate as generate, text_generateDiff as generateDiff, text_generateHtmlTable as generateHtmlTable, text_generateMarkdownTable as generateMarkdownTable, text_generateParagraphs as generateParagraphs, text_generateSentences as generateSentences, text_generateWords as generateWords, text_getAvailableFonts as getAvailableFonts, text_getEmojiByCategory as getEmojiByCategory, text_getEmojiByChar as getEmojiByChar, text_getEmojiByShortcode as getEmojiByShortcode, text_getEmojiCategories as getEmojiCategories, text_getMorseForChar as getMorseForChar, text_getMorseTiming as getMorseTiming, text_htmlToMarkdown as htmlToMarkdown, text_isValidMorse as isValidMorse, text_markdownToHtml as markdownToHtml, text_morseToText as morseToText, text_numberToOrdinal as numberToOrdinal, text_numberToRoman as numberToRoman, text_numberToWords as numberToWords, text_ordinalWords as ordinalWords, text_parseDiff as parseDiff, text_parseTableData as parseTableData, text_readabilityScore as readabilityScore, text_renderMarkdown as renderMarkdown, text_romanToNumber as romanToNumber, text_scoreReadability as scoreReadability, text_searchEmoji as searchEmoji, text_sentenceCount as sentenceCount, text_slugify as slugify, text_slugifyAll as slugifyAll, text_syllableCount as syllableCount, text_textToAscii as textToAscii, text_textToMorse as textToMorse, text_unescapeString as unescapeString, text_wordFrequency as wordFrequency };
642
666
  }
643
667
 
644
- export { type WordCountResult as $, type AcronymCheckResult as A, type LoremUnit as B, CASE_FORMATS as C, DEFAULT_CONVERT_OPTIONS as D, EMOJI_TABLE as E, type FillerCategory as F, type MarkdownResult as G, type MorseOptions as H, type OxfordCommaResult as I, type ParsedTable as J, type KeywordDensityEntry as K, LINE_OPS as L, MORSE_CODE as M, type PassiveVoiceMatch as N, type OxfordCommaInstance as O, type ParsedDiff as P, type PassiveVoiceResult as Q, type PassiveVoiceSentence as R, type ReadabilityResult as S, type ReadabilityScore as T, type SentenceLengthBucket as U, type SentenceLengthDistribution as V, type SlugSeparator as W, type StringDistanceMode as X, type StringDistanceResult as Y, type TableOptions as Z, type TextAnalysis as _, type AcronymIssue as a, textToMorse as a$, type WordyPhraseMatch as a0, type WordyPhraseResult as a1, addBorder as a2, analyzeKeywordDensity as a3, analyzeSentenceLengths as a4, analyzeText as a5, applyOp as a6, applyOps as a7, calculateStringDistance as a8, centerText as a9, getAvailableFonts as aA, getEmojiByCategory as aB, getEmojiByChar as aC, getEmojiByShortcode as aD, getEmojiCategories as aE, getMorseForChar as aF, getMorseTiming as aG, htmlToMarkdown as aH, isValidMorse as aI, markdownToHtml as aJ, morseToText as aK, numberToOrdinal as aL, numberToRoman as aM, numberToWords as aN, ordinalWords as aO, parseDiff as aP, parseTableData as aQ, readabilityScore as aR, renderMarkdown as aS, romanToNumber as aT, scoreReadability as aU, searchEmoji as aV, sentenceCount as aW, slugify as aX, slugifyAll as aY, syllableCount as aZ, textToAscii as a_, checkAcronymExpansion as aa, checkDashUsage as ab, checkOxfordCommaConsistency as ac, convertAll as ad, convertCase as ae, countWords as af, csvToHtml as ag, csvToMarkdown as ah, detectDelimiter as ai, detectFillerWords as aj, detectPassiveVoice as ak, detectWordyPhrases as al, diffLines as am, diffLinesSimple as an, diffStats as ao, escapeAll as ap, escapeString as aq, extractHeadings as ar, formatReadingTime as as, generate as at, generateDiff as au, generateHtmlTable as av, generateMarkdownTable as aw, generateParagraphs as ax, generateSentences as ay, generateWords as az, type AcronymIssueType as b, unescapeString as b0, wordFrequency as b1, type AcronymUsage as c, type AsciiFont as d, type AsciiOptions as e, type CaseFormat as f, type ConvertOptions as g, type DashIssue as h, type DashIssueType as i, type DashUsageResult as j, type DiffFile as k, type DiffHunk as l, type DiffLine as m, type DiffResult as n, type DiffType as o, type DiffViewerLine as p, ESCAPE_MODES as q, type EmojiEntry as r, type EscapeMode as s, text as t, type FillerMatch as u, type FillerWordResult as v, type KeywordDensityOptions as w, type KeywordDensityResult as x, type LineOp as y, type LineType as z };
668
+ export { type WeaselWordMatch as $, type AcronymCheckResult as A, type LoremUnit as B, CASE_FORMATS as C, DEFAULT_CONVERT_OPTIONS as D, EMOJI_TABLE as E, type FillerCategory as F, type MarkdownResult as G, type MorseOptions as H, type OxfordCommaResult as I, type ParsedTable as J, type KeywordDensityEntry as K, LINE_OPS as L, MORSE_CODE as M, type PassiveVoiceMatch as N, type OxfordCommaInstance as O, type ParsedDiff as P, type PassiveVoiceResult as Q, type PassiveVoiceSentence as R, type ReadabilityResult as S, type ReadabilityScore as T, type SentenceLengthBucket as U, type SentenceLengthDistribution as V, type SlugSeparator as W, type StringDistanceMode as X, type StringDistanceResult as Y, type TableOptions as Z, type TextAnalysis as _, type AcronymIssue as a, slugifyAll as a$, type WeaselWordResult as a0, type WordCountResult as a1, type WordyPhraseMatch as a2, type WordyPhraseResult as a3, addBorder as a4, analyzeKeywordDensity as a5, analyzeSentenceLengths as a6, analyzeText as a7, applyOp as a8, applyOps as a9, generateParagraphs as aA, generateSentences as aB, generateWords as aC, getAvailableFonts as aD, getEmojiByCategory as aE, getEmojiByChar as aF, getEmojiByShortcode as aG, getEmojiCategories as aH, getMorseForChar as aI, getMorseTiming as aJ, htmlToMarkdown as aK, isValidMorse as aL, markdownToHtml as aM, morseToText as aN, numberToOrdinal as aO, numberToRoman as aP, numberToWords as aQ, ordinalWords as aR, parseDiff as aS, parseTableData as aT, readabilityScore as aU, renderMarkdown as aV, romanToNumber as aW, scoreReadability as aX, searchEmoji as aY, sentenceCount as aZ, slugify as a_, calculateStringDistance as aa, centerText as ab, checkAcronymExpansion as ac, checkDashUsage as ad, checkOxfordCommaConsistency as ae, convertAll as af, convertCase as ag, countWords as ah, csvToHtml as ai, csvToMarkdown as aj, detectDelimiter as ak, detectFillerWords as al, detectPassiveVoice as am, detectWeaselWords as an, detectWordyPhrases as ao, diffLines as ap, diffLinesSimple as aq, diffStats as ar, escapeAll as as, escapeString as at, extractHeadings as au, formatReadingTime as av, generate as aw, generateDiff as ax, generateHtmlTable as ay, generateMarkdownTable as az, type AcronymIssueType as b, syllableCount as b0, textToAscii as b1, textToMorse as b2, unescapeString as b3, wordFrequency as b4, type AcronymUsage as c, type AsciiFont as d, type AsciiOptions as e, type CaseFormat as f, type ConvertOptions as g, type DashIssue as h, type DashIssueType as i, type DashUsageResult as j, type DiffFile as k, type DiffHunk as l, type DiffLine as m, type DiffResult as n, type DiffType as o, type DiffViewerLine as p, ESCAPE_MODES as q, type EmojiEntry as r, type EscapeMode as s, text as t, type FillerMatch as u, type FillerWordResult as v, type KeywordDensityOptions as w, type KeywordDensityResult as x, type LineOp as y, type LineType as z };
@@ -27,6 +27,7 @@
27
27
  * - emoji-lookup : searchEmoji, getEmojiByShortcode, getEmojiByChar, getEmojiByCategory, getEmojiCategories, EMOJI_TABLE
28
28
  * - em-dash-usage-checker: checkDashUsage
29
29
  * - acronym-expansion-checker: checkAcronymExpansion
30
+ * - weasel-word-detector: detectWeaselWords
30
31
  */
31
32
  interface WordCountResult {
32
33
  words: number;
@@ -517,6 +518,26 @@ interface AcronymCheckResult {
517
518
  * like "APIs" can be missed or misread.
518
519
  */
519
520
  declare function checkAcronymExpansion(text: string): AcronymCheckResult;
521
+ interface WeaselWordMatch {
522
+ phrase: string;
523
+ count: number;
524
+ indices: number[];
525
+ }
526
+ interface WeaselWordResult {
527
+ totalWords: number;
528
+ totalMatches: number;
529
+ density: number;
530
+ matches: WeaselWordMatch[];
531
+ }
532
+ /**
533
+ * Scan text for weasel words: vague hedging phrases that imply evidence
534
+ * or consensus without naming a checkable source ("studies show", "many
535
+ * experts believe", "it is widely known"). Dictionary-based heuristic
536
+ * over a curated phrase list, same shape as detectFillerWords: a flagged
537
+ * phrase is a candidate to replace with a named source or cut, not
538
+ * always wrong in context.
539
+ */
540
+ declare function detectWeaselWords(text: string): WeaselWordResult;
520
541
 
521
542
  type text_AcronymCheckResult = AcronymCheckResult;
522
543
  type text_AcronymIssue = AcronymIssue;
@@ -570,6 +591,8 @@ type text_StringDistanceMode = StringDistanceMode;
570
591
  type text_StringDistanceResult = StringDistanceResult;
571
592
  type text_TableOptions = TableOptions;
572
593
  type text_TextAnalysis = TextAnalysis;
594
+ type text_WeaselWordMatch = WeaselWordMatch;
595
+ type text_WeaselWordResult = WeaselWordResult;
573
596
  type text_WordCountResult = WordCountResult;
574
597
  type text_WordyPhraseMatch = WordyPhraseMatch;
575
598
  type text_WordyPhraseResult = WordyPhraseResult;
@@ -592,6 +615,7 @@ declare const text_csvToMarkdown: typeof csvToMarkdown;
592
615
  declare const text_detectDelimiter: typeof detectDelimiter;
593
616
  declare const text_detectFillerWords: typeof detectFillerWords;
594
617
  declare const text_detectPassiveVoice: typeof detectPassiveVoice;
618
+ declare const text_detectWeaselWords: typeof detectWeaselWords;
595
619
  declare const text_detectWordyPhrases: typeof detectWordyPhrases;
596
620
  declare const text_diffLines: typeof diffLines;
597
621
  declare const text_diffLinesSimple: typeof diffLinesSimple;
@@ -638,7 +662,7 @@ declare const text_textToMorse: typeof textToMorse;
638
662
  declare const text_unescapeString: typeof unescapeString;
639
663
  declare const text_wordFrequency: typeof wordFrequency;
640
664
  declare namespace text {
641
- export { type text_AcronymCheckResult as AcronymCheckResult, type text_AcronymIssue as AcronymIssue, type text_AcronymIssueType as AcronymIssueType, type text_AcronymUsage as AcronymUsage, type text_AsciiFont as AsciiFont, type text_AsciiOptions as AsciiOptions, text_CASE_FORMATS as CASE_FORMATS, type text_CaseFormat as CaseFormat, type text_ConvertOptions as ConvertOptions, text_DEFAULT_CONVERT_OPTIONS as DEFAULT_CONVERT_OPTIONS, type text_DashIssue as DashIssue, type text_DashIssueType as DashIssueType, type text_DashUsageResult as DashUsageResult, type text_DiffFile as DiffFile, type text_DiffHunk as DiffHunk, type text_DiffLine as DiffLine, type text_DiffResult as DiffResult, type text_DiffType as DiffType, type text_DiffViewerLine as DiffViewerLine, text_EMOJI_TABLE as EMOJI_TABLE, text_ESCAPE_MODES as ESCAPE_MODES, type text_EmojiEntry as EmojiEntry, type text_EscapeMode as EscapeMode, type text_FillerCategory as FillerCategory, type text_FillerMatch as FillerMatch, type text_FillerWordResult as FillerWordResult, type text_KeywordDensityEntry as KeywordDensityEntry, type text_KeywordDensityOptions as KeywordDensityOptions, type text_KeywordDensityResult as KeywordDensityResult, text_LINE_OPS as LINE_OPS, type text_LineOp as LineOp, type text_LineType as LineType, type text_LoremUnit as LoremUnit, text_MORSE_CODE as MORSE_CODE, type text_MarkdownResult as MarkdownResult, type text_MorseOptions as MorseOptions, type text_OxfordCommaInstance as OxfordCommaInstance, type text_OxfordCommaResult as OxfordCommaResult, type text_ParsedDiff as ParsedDiff, type text_ParsedTable as ParsedTable, type text_PassiveVoiceMatch as PassiveVoiceMatch, type text_PassiveVoiceResult as PassiveVoiceResult, type text_PassiveVoiceSentence as PassiveVoiceSentence, type text_ReadabilityResult as ReadabilityResult, type text_ReadabilityScore as ReadabilityScore, type text_SentenceLengthBucket as SentenceLengthBucket, type text_SentenceLengthDistribution as SentenceLengthDistribution, type text_SlugSeparator as SlugSeparator, type text_StringDistanceMode as StringDistanceMode, type text_StringDistanceResult as StringDistanceResult, type text_TableOptions as TableOptions, type text_TextAnalysis as TextAnalysis, type text_WordCountResult as WordCountResult, type text_WordyPhraseMatch as WordyPhraseMatch, type text_WordyPhraseResult as WordyPhraseResult, text_addBorder as addBorder, text_analyzeKeywordDensity as analyzeKeywordDensity, text_analyzeSentenceLengths as analyzeSentenceLengths, text_analyzeText as analyzeText, text_applyOp as applyOp, text_applyOps as applyOps, text_calculateStringDistance as calculateStringDistance, text_centerText as centerText, text_checkAcronymExpansion as checkAcronymExpansion, text_checkDashUsage as checkDashUsage, text_checkOxfordCommaConsistency as checkOxfordCommaConsistency, text_convertAll as convertAll, text_convertCase as convertCase, text_countWords as countWords, text_csvToHtml as csvToHtml, text_csvToMarkdown as csvToMarkdown, text_detectDelimiter as detectDelimiter, text_detectFillerWords as detectFillerWords, text_detectPassiveVoice as detectPassiveVoice, text_detectWordyPhrases as detectWordyPhrases, text_diffLines as diffLines, text_diffLinesSimple as diffLinesSimple, text_diffStats as diffStats, text_escapeAll as escapeAll, text_escapeString as escapeString, text_extractHeadings as extractHeadings, text_formatReadingTime as formatReadingTime, text_generate as generate, text_generateDiff as generateDiff, text_generateHtmlTable as generateHtmlTable, text_generateMarkdownTable as generateMarkdownTable, text_generateParagraphs as generateParagraphs, text_generateSentences as generateSentences, text_generateWords as generateWords, text_getAvailableFonts as getAvailableFonts, text_getEmojiByCategory as getEmojiByCategory, text_getEmojiByChar as getEmojiByChar, text_getEmojiByShortcode as getEmojiByShortcode, text_getEmojiCategories as getEmojiCategories, text_getMorseForChar as getMorseForChar, text_getMorseTiming as getMorseTiming, text_htmlToMarkdown as htmlToMarkdown, text_isValidMorse as isValidMorse, text_markdownToHtml as markdownToHtml, text_morseToText as morseToText, text_numberToOrdinal as numberToOrdinal, text_numberToRoman as numberToRoman, text_numberToWords as numberToWords, text_ordinalWords as ordinalWords, text_parseDiff as parseDiff, text_parseTableData as parseTableData, text_readabilityScore as readabilityScore, text_renderMarkdown as renderMarkdown, text_romanToNumber as romanToNumber, text_scoreReadability as scoreReadability, text_searchEmoji as searchEmoji, text_sentenceCount as sentenceCount, text_slugify as slugify, text_slugifyAll as slugifyAll, text_syllableCount as syllableCount, text_textToAscii as textToAscii, text_textToMorse as textToMorse, text_unescapeString as unescapeString, text_wordFrequency as wordFrequency };
665
+ export { type text_AcronymCheckResult as AcronymCheckResult, type text_AcronymIssue as AcronymIssue, type text_AcronymIssueType as AcronymIssueType, type text_AcronymUsage as AcronymUsage, type text_AsciiFont as AsciiFont, type text_AsciiOptions as AsciiOptions, text_CASE_FORMATS as CASE_FORMATS, type text_CaseFormat as CaseFormat, type text_ConvertOptions as ConvertOptions, text_DEFAULT_CONVERT_OPTIONS as DEFAULT_CONVERT_OPTIONS, type text_DashIssue as DashIssue, type text_DashIssueType as DashIssueType, type text_DashUsageResult as DashUsageResult, type text_DiffFile as DiffFile, type text_DiffHunk as DiffHunk, type text_DiffLine as DiffLine, type text_DiffResult as DiffResult, type text_DiffType as DiffType, type text_DiffViewerLine as DiffViewerLine, text_EMOJI_TABLE as EMOJI_TABLE, text_ESCAPE_MODES as ESCAPE_MODES, type text_EmojiEntry as EmojiEntry, type text_EscapeMode as EscapeMode, type text_FillerCategory as FillerCategory, type text_FillerMatch as FillerMatch, type text_FillerWordResult as FillerWordResult, type text_KeywordDensityEntry as KeywordDensityEntry, type text_KeywordDensityOptions as KeywordDensityOptions, type text_KeywordDensityResult as KeywordDensityResult, text_LINE_OPS as LINE_OPS, type text_LineOp as LineOp, type text_LineType as LineType, type text_LoremUnit as LoremUnit, text_MORSE_CODE as MORSE_CODE, type text_MarkdownResult as MarkdownResult, type text_MorseOptions as MorseOptions, type text_OxfordCommaInstance as OxfordCommaInstance, type text_OxfordCommaResult as OxfordCommaResult, type text_ParsedDiff as ParsedDiff, type text_ParsedTable as ParsedTable, type text_PassiveVoiceMatch as PassiveVoiceMatch, type text_PassiveVoiceResult as PassiveVoiceResult, type text_PassiveVoiceSentence as PassiveVoiceSentence, type text_ReadabilityResult as ReadabilityResult, type text_ReadabilityScore as ReadabilityScore, type text_SentenceLengthBucket as SentenceLengthBucket, type text_SentenceLengthDistribution as SentenceLengthDistribution, type text_SlugSeparator as SlugSeparator, type text_StringDistanceMode as StringDistanceMode, type text_StringDistanceResult as StringDistanceResult, type text_TableOptions as TableOptions, type text_TextAnalysis as TextAnalysis, type text_WeaselWordMatch as WeaselWordMatch, type text_WeaselWordResult as WeaselWordResult, type text_WordCountResult as WordCountResult, type text_WordyPhraseMatch as WordyPhraseMatch, type text_WordyPhraseResult as WordyPhraseResult, text_addBorder as addBorder, text_analyzeKeywordDensity as analyzeKeywordDensity, text_analyzeSentenceLengths as analyzeSentenceLengths, text_analyzeText as analyzeText, text_applyOp as applyOp, text_applyOps as applyOps, text_calculateStringDistance as calculateStringDistance, text_centerText as centerText, text_checkAcronymExpansion as checkAcronymExpansion, text_checkDashUsage as checkDashUsage, text_checkOxfordCommaConsistency as checkOxfordCommaConsistency, text_convertAll as convertAll, text_convertCase as convertCase, text_countWords as countWords, text_csvToHtml as csvToHtml, text_csvToMarkdown as csvToMarkdown, text_detectDelimiter as detectDelimiter, text_detectFillerWords as detectFillerWords, text_detectPassiveVoice as detectPassiveVoice, text_detectWeaselWords as detectWeaselWords, text_detectWordyPhrases as detectWordyPhrases, text_diffLines as diffLines, text_diffLinesSimple as diffLinesSimple, text_diffStats as diffStats, text_escapeAll as escapeAll, text_escapeString as escapeString, text_extractHeadings as extractHeadings, text_formatReadingTime as formatReadingTime, text_generate as generate, text_generateDiff as generateDiff, text_generateHtmlTable as generateHtmlTable, text_generateMarkdownTable as generateMarkdownTable, text_generateParagraphs as generateParagraphs, text_generateSentences as generateSentences, text_generateWords as generateWords, text_getAvailableFonts as getAvailableFonts, text_getEmojiByCategory as getEmojiByCategory, text_getEmojiByChar as getEmojiByChar, text_getEmojiByShortcode as getEmojiByShortcode, text_getEmojiCategories as getEmojiCategories, text_getMorseForChar as getMorseForChar, text_getMorseTiming as getMorseTiming, text_htmlToMarkdown as htmlToMarkdown, text_isValidMorse as isValidMorse, text_markdownToHtml as markdownToHtml, text_morseToText as morseToText, text_numberToOrdinal as numberToOrdinal, text_numberToRoman as numberToRoman, text_numberToWords as numberToWords, text_ordinalWords as ordinalWords, text_parseDiff as parseDiff, text_parseTableData as parseTableData, text_readabilityScore as readabilityScore, text_renderMarkdown as renderMarkdown, text_romanToNumber as romanToNumber, text_scoreReadability as scoreReadability, text_searchEmoji as searchEmoji, text_sentenceCount as sentenceCount, text_slugify as slugify, text_slugifyAll as slugifyAll, text_syllableCount as syllableCount, text_textToAscii as textToAscii, text_textToMorse as textToMorse, text_unescapeString as unescapeString, text_wordFrequency as wordFrequency };
642
666
  }
643
667
 
644
- export { type WordCountResult as $, type AcronymCheckResult as A, type LoremUnit as B, CASE_FORMATS as C, DEFAULT_CONVERT_OPTIONS as D, EMOJI_TABLE as E, type FillerCategory as F, type MarkdownResult as G, type MorseOptions as H, type OxfordCommaResult as I, type ParsedTable as J, type KeywordDensityEntry as K, LINE_OPS as L, MORSE_CODE as M, type PassiveVoiceMatch as N, type OxfordCommaInstance as O, type ParsedDiff as P, type PassiveVoiceResult as Q, type PassiveVoiceSentence as R, type ReadabilityResult as S, type ReadabilityScore as T, type SentenceLengthBucket as U, type SentenceLengthDistribution as V, type SlugSeparator as W, type StringDistanceMode as X, type StringDistanceResult as Y, type TableOptions as Z, type TextAnalysis as _, type AcronymIssue as a, textToMorse as a$, type WordyPhraseMatch as a0, type WordyPhraseResult as a1, addBorder as a2, analyzeKeywordDensity as a3, analyzeSentenceLengths as a4, analyzeText as a5, applyOp as a6, applyOps as a7, calculateStringDistance as a8, centerText as a9, getAvailableFonts as aA, getEmojiByCategory as aB, getEmojiByChar as aC, getEmojiByShortcode as aD, getEmojiCategories as aE, getMorseForChar as aF, getMorseTiming as aG, htmlToMarkdown as aH, isValidMorse as aI, markdownToHtml as aJ, morseToText as aK, numberToOrdinal as aL, numberToRoman as aM, numberToWords as aN, ordinalWords as aO, parseDiff as aP, parseTableData as aQ, readabilityScore as aR, renderMarkdown as aS, romanToNumber as aT, scoreReadability as aU, searchEmoji as aV, sentenceCount as aW, slugify as aX, slugifyAll as aY, syllableCount as aZ, textToAscii as a_, checkAcronymExpansion as aa, checkDashUsage as ab, checkOxfordCommaConsistency as ac, convertAll as ad, convertCase as ae, countWords as af, csvToHtml as ag, csvToMarkdown as ah, detectDelimiter as ai, detectFillerWords as aj, detectPassiveVoice as ak, detectWordyPhrases as al, diffLines as am, diffLinesSimple as an, diffStats as ao, escapeAll as ap, escapeString as aq, extractHeadings as ar, formatReadingTime as as, generate as at, generateDiff as au, generateHtmlTable as av, generateMarkdownTable as aw, generateParagraphs as ax, generateSentences as ay, generateWords as az, type AcronymIssueType as b, unescapeString as b0, wordFrequency as b1, type AcronymUsage as c, type AsciiFont as d, type AsciiOptions as e, type CaseFormat as f, type ConvertOptions as g, type DashIssue as h, type DashIssueType as i, type DashUsageResult as j, type DiffFile as k, type DiffHunk as l, type DiffLine as m, type DiffResult as n, type DiffType as o, type DiffViewerLine as p, ESCAPE_MODES as q, type EmojiEntry as r, type EscapeMode as s, text as t, type FillerMatch as u, type FillerWordResult as v, type KeywordDensityOptions as w, type KeywordDensityResult as x, type LineOp as y, type LineType as z };
668
+ export { type WeaselWordMatch as $, type AcronymCheckResult as A, type LoremUnit as B, CASE_FORMATS as C, DEFAULT_CONVERT_OPTIONS as D, EMOJI_TABLE as E, type FillerCategory as F, type MarkdownResult as G, type MorseOptions as H, type OxfordCommaResult as I, type ParsedTable as J, type KeywordDensityEntry as K, LINE_OPS as L, MORSE_CODE as M, type PassiveVoiceMatch as N, type OxfordCommaInstance as O, type ParsedDiff as P, type PassiveVoiceResult as Q, type PassiveVoiceSentence as R, type ReadabilityResult as S, type ReadabilityScore as T, type SentenceLengthBucket as U, type SentenceLengthDistribution as V, type SlugSeparator as W, type StringDistanceMode as X, type StringDistanceResult as Y, type TableOptions as Z, type TextAnalysis as _, type AcronymIssue as a, slugifyAll as a$, type WeaselWordResult as a0, type WordCountResult as a1, type WordyPhraseMatch as a2, type WordyPhraseResult as a3, addBorder as a4, analyzeKeywordDensity as a5, analyzeSentenceLengths as a6, analyzeText as a7, applyOp as a8, applyOps as a9, generateParagraphs as aA, generateSentences as aB, generateWords as aC, getAvailableFonts as aD, getEmojiByCategory as aE, getEmojiByChar as aF, getEmojiByShortcode as aG, getEmojiCategories as aH, getMorseForChar as aI, getMorseTiming as aJ, htmlToMarkdown as aK, isValidMorse as aL, markdownToHtml as aM, morseToText as aN, numberToOrdinal as aO, numberToRoman as aP, numberToWords as aQ, ordinalWords as aR, parseDiff as aS, parseTableData as aT, readabilityScore as aU, renderMarkdown as aV, romanToNumber as aW, scoreReadability as aX, searchEmoji as aY, sentenceCount as aZ, slugify as a_, calculateStringDistance as aa, centerText as ab, checkAcronymExpansion as ac, checkDashUsage as ad, checkOxfordCommaConsistency as ae, convertAll as af, convertCase as ag, countWords as ah, csvToHtml as ai, csvToMarkdown as aj, detectDelimiter as ak, detectFillerWords as al, detectPassiveVoice as am, detectWeaselWords as an, detectWordyPhrases as ao, diffLines as ap, diffLinesSimple as aq, diffStats as ar, escapeAll as as, escapeString as at, extractHeadings as au, formatReadingTime as av, generate as aw, generateDiff as ax, generateHtmlTable as ay, generateMarkdownTable as az, type AcronymIssueType as b, syllableCount as b0, textToAscii as b1, textToMorse as b2, unescapeString as b3, wordFrequency as b4, type AcronymUsage as c, type AsciiFont as d, type AsciiOptions as e, type CaseFormat as f, type ConvertOptions as g, type DashIssue as h, type DashIssueType as i, type DashUsageResult as j, type DiffFile as k, type DiffHunk as l, type DiffLine as m, type DiffResult as n, type DiffType as o, type DiffViewerLine as p, ESCAPE_MODES as q, type EmojiEntry as r, type EscapeMode as s, text as t, type FillerMatch as u, type FillerWordResult as v, type KeywordDensityOptions as w, type KeywordDensityResult as x, type LineOp as y, type LineType as z };
@@ -2183,9 +2183,94 @@ function summarizeCsvColumnStats(input, options) {
2183
2183
  });
2184
2184
  return { columns, rowCount: parsed.rows.length };
2185
2185
  }
2186
+ var MARKDOWN_IMAGE_RE = /!\[([^\]]*)\]\(([^)\s]+)(?:\s+"[^"]*")?\)/g;
2187
+ var MARKDOWN_IMAGE_GENERIC_ALT_WORDS = /* @__PURE__ */ new Set([
2188
+ "image",
2189
+ "picture",
2190
+ "photo",
2191
+ "photograph",
2192
+ "pic",
2193
+ "img",
2194
+ "graphic",
2195
+ "screenshot",
2196
+ "icon",
2197
+ "logo"
2198
+ ]);
2199
+ var MARKDOWN_IMAGE_REDUNDANT_PREFIX_RE = /^(image|picture|photo|photograph)\s+of\s+/i;
2200
+ var MARKDOWN_IMAGE_FILENAME_EXT_RE = /\.(png|jpe?g|gif|svg|webp|bmp|avif|tiff?)$/i;
2201
+ function markdownImageBasenameWithoutExt(src) {
2202
+ const withoutQuery = src.split(/[?#]/)[0];
2203
+ const file = withoutQuery.split("/").pop() ?? withoutQuery;
2204
+ return file.replace(MARKDOWN_IMAGE_FILENAME_EXT_RE, "");
2205
+ }
2206
+ function auditMarkdownImageAltText(markdown) {
2207
+ if (typeof markdown !== "string") return { error: "markdown must be a string" };
2208
+ const lines = markdown.replace(/\r\n/g, "\n").split("\n");
2209
+ const images = [];
2210
+ const issues = [];
2211
+ let inFence = false;
2212
+ let fenceMarker = "";
2213
+ lines.forEach((line, idx) => {
2214
+ const fenceMatch = line.match(/^\s*(```+|~~~+)/);
2215
+ if (fenceMatch) {
2216
+ if (!inFence) {
2217
+ inFence = true;
2218
+ fenceMarker = fenceMatch[1][0];
2219
+ } else if (fenceMatch[1][0] === fenceMarker) {
2220
+ inFence = false;
2221
+ }
2222
+ return;
2223
+ }
2224
+ if (inFence) return;
2225
+ const lineNo = idx + 1;
2226
+ MARKDOWN_IMAGE_RE.lastIndex = 0;
2227
+ let match;
2228
+ while ((match = MARKDOWN_IMAGE_RE.exec(line)) !== null) {
2229
+ const alt = match[1].trim();
2230
+ const src = match[2];
2231
+ images.push({ line: lineNo, alt, src });
2232
+ if (alt === "") {
2233
+ issues.push({
2234
+ line: lineNo,
2235
+ type: "empty-alt",
2236
+ src,
2237
+ message: `Image at line ${lineNo} has no alt text (src: ${src}). If this image is purely decorative, an intentionally empty alt is fine; otherwise it needs a description.`
2238
+ });
2239
+ continue;
2240
+ }
2241
+ if (MARKDOWN_IMAGE_GENERIC_ALT_WORDS.has(alt.toLowerCase())) {
2242
+ issues.push({
2243
+ line: lineNo,
2244
+ type: "generic-alt",
2245
+ src,
2246
+ message: `Alt text "${alt}" at line ${lineNo} is a generic placeholder and doesn't describe the image's content.`
2247
+ });
2248
+ }
2249
+ if (MARKDOWN_IMAGE_REDUNDANT_PREFIX_RE.test(alt)) {
2250
+ issues.push({
2251
+ line: lineNo,
2252
+ type: "redundant-prefix",
2253
+ src,
2254
+ message: `Alt text "${alt}" at line ${lineNo} starts with a redundant prefix; screen readers already announce images, so "${alt.replace(MARKDOWN_IMAGE_REDUNDANT_PREFIX_RE, "")}" reads better.`
2255
+ });
2256
+ }
2257
+ const baseName = markdownImageBasenameWithoutExt(src);
2258
+ if (MARKDOWN_IMAGE_FILENAME_EXT_RE.test(alt) || baseName !== "" && alt.toLowerCase() === baseName.toLowerCase()) {
2259
+ issues.push({
2260
+ line: lineNo,
2261
+ type: "filename-as-alt",
2262
+ src,
2263
+ message: `Alt text "${alt}" at line ${lineNo} looks like the image's own filename rather than a description.`
2264
+ });
2265
+ }
2266
+ }
2267
+ });
2268
+ return { images, issues, imageCount: images.length };
2269
+ }
2186
2270
 
2187
2271
  exports.alignMarkdownTables = alignMarkdownTables;
2188
2272
  exports.analyzeCaptionSpeed = analyzeCaptionSpeed;
2273
+ exports.auditMarkdownImageAltText = auditMarkdownImageAltText;
2189
2274
  exports.calculateMarkdownTaskListProgress = calculateMarkdownTaskListProgress;
2190
2275
  exports.checkMarkdownInternalLinks = checkMarkdownInternalLinks;
2191
2276
  exports.convertSubtitles = convertSubtitles;
@@ -1 +1 @@
1
- export { C as CaptionSpeedCue, a as CaptionSpeedResult, b as ConvertedSubtitles, c as CsvColumnMostCommon, e as CsvColumnStats, f as CsvColumnStatsOptions, g as CsvColumnStatsResult, h as CsvColumnType, i as CsvColumnTypeInfo, j as CsvColumnTypeOptions, k as CsvColumnTypeResult, l as CsvDuplicateGroup, m as CsvDuplicateOptions, n as CsvDuplicateResult, o as CsvParseResult, p as CsvToSqlOptions, q as CsvToSqlResult, E as EnvDiffError, r as EnvDiffResult, s as EnvEntry, t as EnvParseResult, F as FrontMatterError, u as FrontMatterResult, H as HeadingEntry, v as HeadingHierarchyResult, w as HeadingIssue, x as HeadingIssueType, I as IniSection, M as MarkdownAnchorHeading, y as MarkdownAnchorLink, z as MarkdownInternalLinkCheckResult, A as MarkdownTableAlignResult, B as MarkdownTableColumnAlignment, D as MarkdownTableInfo, G as MarkdownTaskListItem, J as MarkdownTaskListProgressResult, K as MarkdownTaskListSectionSummary, L as MarkdownTocEntry, N as MarkdownTocOptions, O as MarkdownTocResult, P as NdjsonDedupeResult, Q as NdjsonLineResult, R as NdjsonValidateResult, S as ParseOptions, T as ParsedIni, U as ParsedSubtitles, V as SubtitleCue, W as SubtitleFormat, X as TomlFormatResult, Y as ValidationResult, Z as XmlFormatResult, _ as XmlToJsonOptions, $ as YamlAnchorInfo, a0 as YamlAnchorResolveError, a1 as YamlAnchorResolveResult, a2 as YamlDuplicateKeyEntry, a3 as YamlDuplicateKeyError, a4 as YamlDuplicateKeyResult, a5 as alignMarkdownTables, a6 as analyzeCaptionSpeed, a7 as calculateMarkdownTaskListProgress, a8 as checkMarkdownInternalLinks, a9 as convertSubtitles, aa as csvToJson, ab as csvToSqlInsert, ac as dedupeNdjson, ad as detectDelimiter, ae as detectSubtitleFormat, af as diffEnvExample, ag as envToExport, ah as envToJson, ai as findCsvDuplicateRows, aj as findYamlDuplicateKeys, ak as formatNdjson, al as formatSubtitleTimestamp, am as formatToml, an as formatXml, ao as generateMarkdownToc, ap as getSection, aq as getSectionNames, ar as getTomlStats, as as getXmlStats, at as getYamlStats, au as inferCsvColumnTypes, av as iniToJson, aw as jsonArrayToNdjson, ax as jsonToIni, ay as jsonToToml, az as jsonToXml, aA as minifyNdjson, aB as minifyToml, aC as minifyXml, aD as ndjsonToCsv, aE as ndjsonToJsonArray, aF as parseCsv, aG as parseEnv, aH as parseFrontMatter, aI as parseIni, aJ as parseSubtitleTimestamp, aK as parseSubtitles, aL as parseXmlToObject, aM as resolveYamlAnchors, aN as serializeSubtitles, aO as shiftSubtitles, aP as stringifyIni, aQ as summarizeCsvColumnStats, aR as toCsvString, aS as tomlToJson, aT as validateEnvKey, aU as validateIni, aV as validateMarkdownHeadingHierarchy, aW as validateNdjson, aX as validateToml, aY as validateXml, aZ as validateYaml, a_ as xmlToJson } from '../data-3qMdFIF5.cjs';
1
+ export { C as CaptionSpeedCue, a as CaptionSpeedResult, b as ConvertedSubtitles, c as CsvColumnMostCommon, e as CsvColumnStats, f as CsvColumnStatsOptions, g as CsvColumnStatsResult, h as CsvColumnType, i as CsvColumnTypeInfo, j as CsvColumnTypeOptions, k as CsvColumnTypeResult, l as CsvDuplicateGroup, m as CsvDuplicateOptions, n as CsvDuplicateResult, o as CsvParseResult, p as CsvToSqlOptions, q as CsvToSqlResult, E as EnvDiffError, r as EnvDiffResult, s as EnvEntry, t as EnvParseResult, F as FrontMatterError, u as FrontMatterResult, H as HeadingEntry, v as HeadingHierarchyResult, w as HeadingIssue, x as HeadingIssueType, I as IniSection, M as MarkdownAnchorHeading, y as MarkdownAnchorLink, z as MarkdownImageAltIssue, A as MarkdownImageAltIssueType, B as MarkdownImageAltTextAuditResult, D as MarkdownImageEntry, G as MarkdownInternalLinkCheckResult, J as MarkdownTableAlignResult, K as MarkdownTableColumnAlignment, L as MarkdownTableInfo, N as MarkdownTaskListItem, O as MarkdownTaskListProgressResult, P as MarkdownTaskListSectionSummary, Q as MarkdownTocEntry, R as MarkdownTocOptions, S as MarkdownTocResult, T as NdjsonDedupeResult, U as NdjsonLineResult, V as NdjsonValidateResult, W as ParseOptions, X as ParsedIni, Y as ParsedSubtitles, Z as SubtitleCue, _ as SubtitleFormat, $ as TomlFormatResult, a0 as ValidationResult, a1 as XmlFormatResult, a2 as XmlToJsonOptions, a3 as YamlAnchorInfo, a4 as YamlAnchorResolveError, a5 as YamlAnchorResolveResult, a6 as YamlDuplicateKeyEntry, a7 as YamlDuplicateKeyError, a8 as YamlDuplicateKeyResult, a9 as alignMarkdownTables, aa as analyzeCaptionSpeed, ab as auditMarkdownImageAltText, ac as calculateMarkdownTaskListProgress, ad as checkMarkdownInternalLinks, ae as convertSubtitles, af as csvToJson, ag as csvToSqlInsert, ah as dedupeNdjson, ai as detectDelimiter, aj as detectSubtitleFormat, ak as diffEnvExample, al as envToExport, am as envToJson, an as findCsvDuplicateRows, ao as findYamlDuplicateKeys, ap as formatNdjson, aq as formatSubtitleTimestamp, ar as formatToml, as as formatXml, at as generateMarkdownToc, au as getSection, av as getSectionNames, aw as getTomlStats, ax as getXmlStats, ay as getYamlStats, az as inferCsvColumnTypes, aA as iniToJson, aB as jsonArrayToNdjson, aC as jsonToIni, aD as jsonToToml, aE as jsonToXml, aF as minifyNdjson, aG as minifyToml, aH as minifyXml, aI as ndjsonToCsv, aJ as ndjsonToJsonArray, aK as parseCsv, aL as parseEnv, aM as parseFrontMatter, aN as parseIni, aO as parseSubtitleTimestamp, aP as parseSubtitles, aQ as parseXmlToObject, aR as resolveYamlAnchors, aS as serializeSubtitles, aT as shiftSubtitles, aU as stringifyIni, aV as summarizeCsvColumnStats, aW as toCsvString, aX as tomlToJson, aY as validateEnvKey, aZ as validateIni, a_ as validateMarkdownHeadingHierarchy, a$ as validateNdjson, b0 as validateToml, b1 as validateXml, b2 as validateYaml, b3 as xmlToJson } from '../data-Dg5dEwWl.cjs';
@@ -1 +1 @@
1
- export { C as CaptionSpeedCue, a as CaptionSpeedResult, b as ConvertedSubtitles, c as CsvColumnMostCommon, e as CsvColumnStats, f as CsvColumnStatsOptions, g as CsvColumnStatsResult, h as CsvColumnType, i as CsvColumnTypeInfo, j as CsvColumnTypeOptions, k as CsvColumnTypeResult, l as CsvDuplicateGroup, m as CsvDuplicateOptions, n as CsvDuplicateResult, o as CsvParseResult, p as CsvToSqlOptions, q as CsvToSqlResult, E as EnvDiffError, r as EnvDiffResult, s as EnvEntry, t as EnvParseResult, F as FrontMatterError, u as FrontMatterResult, H as HeadingEntry, v as HeadingHierarchyResult, w as HeadingIssue, x as HeadingIssueType, I as IniSection, M as MarkdownAnchorHeading, y as MarkdownAnchorLink, z as MarkdownInternalLinkCheckResult, A as MarkdownTableAlignResult, B as MarkdownTableColumnAlignment, D as MarkdownTableInfo, G as MarkdownTaskListItem, J as MarkdownTaskListProgressResult, K as MarkdownTaskListSectionSummary, L as MarkdownTocEntry, N as MarkdownTocOptions, O as MarkdownTocResult, P as NdjsonDedupeResult, Q as NdjsonLineResult, R as NdjsonValidateResult, S as ParseOptions, T as ParsedIni, U as ParsedSubtitles, V as SubtitleCue, W as SubtitleFormat, X as TomlFormatResult, Y as ValidationResult, Z as XmlFormatResult, _ as XmlToJsonOptions, $ as YamlAnchorInfo, a0 as YamlAnchorResolveError, a1 as YamlAnchorResolveResult, a2 as YamlDuplicateKeyEntry, a3 as YamlDuplicateKeyError, a4 as YamlDuplicateKeyResult, a5 as alignMarkdownTables, a6 as analyzeCaptionSpeed, a7 as calculateMarkdownTaskListProgress, a8 as checkMarkdownInternalLinks, a9 as convertSubtitles, aa as csvToJson, ab as csvToSqlInsert, ac as dedupeNdjson, ad as detectDelimiter, ae as detectSubtitleFormat, af as diffEnvExample, ag as envToExport, ah as envToJson, ai as findCsvDuplicateRows, aj as findYamlDuplicateKeys, ak as formatNdjson, al as formatSubtitleTimestamp, am as formatToml, an as formatXml, ao as generateMarkdownToc, ap as getSection, aq as getSectionNames, ar as getTomlStats, as as getXmlStats, at as getYamlStats, au as inferCsvColumnTypes, av as iniToJson, aw as jsonArrayToNdjson, ax as jsonToIni, ay as jsonToToml, az as jsonToXml, aA as minifyNdjson, aB as minifyToml, aC as minifyXml, aD as ndjsonToCsv, aE as ndjsonToJsonArray, aF as parseCsv, aG as parseEnv, aH as parseFrontMatter, aI as parseIni, aJ as parseSubtitleTimestamp, aK as parseSubtitles, aL as parseXmlToObject, aM as resolveYamlAnchors, aN as serializeSubtitles, aO as shiftSubtitles, aP as stringifyIni, aQ as summarizeCsvColumnStats, aR as toCsvString, aS as tomlToJson, aT as validateEnvKey, aU as validateIni, aV as validateMarkdownHeadingHierarchy, aW as validateNdjson, aX as validateToml, aY as validateXml, aZ as validateYaml, a_ as xmlToJson } from '../data-3qMdFIF5.js';
1
+ export { C as CaptionSpeedCue, a as CaptionSpeedResult, b as ConvertedSubtitles, c as CsvColumnMostCommon, e as CsvColumnStats, f as CsvColumnStatsOptions, g as CsvColumnStatsResult, h as CsvColumnType, i as CsvColumnTypeInfo, j as CsvColumnTypeOptions, k as CsvColumnTypeResult, l as CsvDuplicateGroup, m as CsvDuplicateOptions, n as CsvDuplicateResult, o as CsvParseResult, p as CsvToSqlOptions, q as CsvToSqlResult, E as EnvDiffError, r as EnvDiffResult, s as EnvEntry, t as EnvParseResult, F as FrontMatterError, u as FrontMatterResult, H as HeadingEntry, v as HeadingHierarchyResult, w as HeadingIssue, x as HeadingIssueType, I as IniSection, M as MarkdownAnchorHeading, y as MarkdownAnchorLink, z as MarkdownImageAltIssue, A as MarkdownImageAltIssueType, B as MarkdownImageAltTextAuditResult, D as MarkdownImageEntry, G as MarkdownInternalLinkCheckResult, J as MarkdownTableAlignResult, K as MarkdownTableColumnAlignment, L as MarkdownTableInfo, N as MarkdownTaskListItem, O as MarkdownTaskListProgressResult, P as MarkdownTaskListSectionSummary, Q as MarkdownTocEntry, R as MarkdownTocOptions, S as MarkdownTocResult, T as NdjsonDedupeResult, U as NdjsonLineResult, V as NdjsonValidateResult, W as ParseOptions, X as ParsedIni, Y as ParsedSubtitles, Z as SubtitleCue, _ as SubtitleFormat, $ as TomlFormatResult, a0 as ValidationResult, a1 as XmlFormatResult, a2 as XmlToJsonOptions, a3 as YamlAnchorInfo, a4 as YamlAnchorResolveError, a5 as YamlAnchorResolveResult, a6 as YamlDuplicateKeyEntry, a7 as YamlDuplicateKeyError, a8 as YamlDuplicateKeyResult, a9 as alignMarkdownTables, aa as analyzeCaptionSpeed, ab as auditMarkdownImageAltText, ac as calculateMarkdownTaskListProgress, ad as checkMarkdownInternalLinks, ae as convertSubtitles, af as csvToJson, ag as csvToSqlInsert, ah as dedupeNdjson, ai as detectDelimiter, aj as detectSubtitleFormat, ak as diffEnvExample, al as envToExport, am as envToJson, an as findCsvDuplicateRows, ao as findYamlDuplicateKeys, ap as formatNdjson, aq as formatSubtitleTimestamp, ar as formatToml, as as formatXml, at as generateMarkdownToc, au as getSection, av as getSectionNames, aw as getTomlStats, ax as getXmlStats, ay as getYamlStats, az as inferCsvColumnTypes, aA as iniToJson, aB as jsonArrayToNdjson, aC as jsonToIni, aD as jsonToToml, aE as jsonToXml, aF as minifyNdjson, aG as minifyToml, aH as minifyXml, aI as ndjsonToCsv, aJ as ndjsonToJsonArray, aK as parseCsv, aL as parseEnv, aM as parseFrontMatter, aN as parseIni, aO as parseSubtitleTimestamp, aP as parseSubtitles, aQ as parseXmlToObject, aR as resolveYamlAnchors, aS as serializeSubtitles, aT as shiftSubtitles, aU as stringifyIni, aV as summarizeCsvColumnStats, aW as toCsvString, aX as tomlToJson, aY as validateEnvKey, aZ as validateIni, a_ as validateMarkdownHeadingHierarchy, a$ as validateNdjson, b0 as validateToml, b1 as validateXml, b2 as validateYaml, b3 as xmlToJson } from '../data-Dg5dEwWl.js';