@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/CHANGELOG.md +8 -0
- package/README.md +21 -1
- package/dist/{chunk-YQJ7CEUL.js → chunk-2YWKRNDM.js} +58 -1
- package/dist/{chunk-G5NUC5MV.js → chunk-NFTUG3XP.js} +88 -1
- package/dist/{chunk-PEMPPDMM.js → chunk-NTHUTIZH.js} +86 -1
- package/dist/{data-3qMdFIF5.d.ts → data-Dg5dEwWl.d.cts} +37 -2
- package/dist/{data-3qMdFIF5.d.cts → data-Dg5dEwWl.d.ts} +37 -2
- package/dist/index.cjs +229 -0
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/{text-DOopHoK3.d.cts → text-DFCNpyvH.d.cts} +26 -2
- package/dist/{text-DOopHoK3.d.ts → text-DFCNpyvH.d.ts} +26 -2
- package/dist/tools/data.cjs +85 -0
- package/dist/tools/data.d.cts +1 -1
- package/dist/tools/data.d.ts +1 -1
- package/dist/tools/data.js +1 -1
- package/dist/tools/text.cjs +57 -0
- package/dist/tools/text.d.cts +1 -1
- package/dist/tools/text.d.ts +1 -1
- package/dist/tools/text.js +1 -1
- package/dist/tools/units.cjs +87 -0
- package/dist/tools/units.d.cts +1 -1
- package/dist/tools/units.d.ts +1 -1
- package/dist/tools/units.js +1 -1
- package/dist/{units-BBzv0VIt.d.ts → units-7rkeDBbW.d.cts} +68 -2
- package/dist/{units-BBzv0VIt.d.cts → units-7rkeDBbW.d.ts} +68 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
Full release notes for all Utilix surfaces (browser tools, REST API, SDKs, MCP server) live at [utilix.tech/changelog](https://utilix.tech/changelog). This file tracks just this package.
|
|
4
4
|
|
|
5
|
+
## 0.97.0
|
|
6
|
+
- Add `calculatePositionSize` (position-size-risk-calculator): compute a trade's position size from account size, risk percent per trade, entry price, and stop-loss price, plus the risk/reward ratio against an optional target price.
|
|
7
|
+
- Add `detectWeaselWords` (weasel-word-detector): scan text for weasel words, vague hedging phrases that imply evidence or consensus without naming a checkable source, like "studies show" or "many experts believe".
|
|
8
|
+
|
|
9
|
+
## 0.96.0
|
|
10
|
+
- Add `validateRoutingNumber` (aba-routing-number-validator): validate a 9-digit US bank routing number via its weighted mod-10 checksum, identifying the routing number's type and Federal Reserve district from its first two digits.
|
|
11
|
+
- Add `auditMarkdownImageAltText` (markdown-image-alt-text-auditor): scan a Markdown document's inline images and flag alt text accessibility smells, missing/empty alt text, generic placeholder words, a redundant "image of" prefix, and alt text that's just the image's own filename.
|
|
12
|
+
|
|
5
13
|
## 0.95.0
|
|
6
14
|
- Add `readPngChunks` (png-chunk-inspector): walk a PNG's chunk stream directly from its bytes to report every chunk's type, offset, size, and CRC-32 validity, plus the decoded IHDR header and common ancillary chunks (tEXt, pHYs, gAMA, tIME, acTL).
|
|
7
15
|
- Add `estimateAudioFileSize` (audio-file-size-estimator): estimate an audio file's size before recording or exporting it, uncompressed PCM size from sample rate/bit depth/channels or compressed size from a target bitrate.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @utilix-tech/sdk
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**744 developer utility functions for Node.js: runs locally, no API key required.**
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@utilix-tech/sdk)
|
|
6
6
|
[](https://www.npmjs.com/package/@utilix-tech/sdk)
|
|
@@ -782,6 +782,26 @@ readPngChunks(pngBytes);
|
|
|
782
782
|
import { estimateAudioFileSize } from "@utilix-tech/sdk/units";
|
|
783
783
|
estimateAudioFileSize({ mode: "pcm", durationSeconds: 60, sampleRateHz: 44100, bitDepth: 16, channels: 2 });
|
|
784
784
|
// { mode: "pcm", durationSeconds: 60, sampleRateHz: 44100, bitDepth: 16, channels: 2, dataBytes: 10584000, fileSizeBytes: 10584044, fileSizeMB: 10.58, fileSizeMiB: 10.09 }
|
|
785
|
+
|
|
786
|
+
// Validate a US bank routing number (ABA/RTN) and identify its Federal Reserve district
|
|
787
|
+
import { validateRoutingNumber } from "@utilix-tech/sdk/units";
|
|
788
|
+
validateRoutingNumber("021000021");
|
|
789
|
+
// { valid: true, checksumValid: true, length: 9, formatted: "0210 0002 1", routingNumberType: "primary", federalReserveDistrict: { code: 2, bank: "New York" } }
|
|
790
|
+
|
|
791
|
+
// Audit a Markdown document's images for alt text accessibility smells
|
|
792
|
+
import { auditMarkdownImageAltText } from "@utilix-tech/sdk/data";
|
|
793
|
+
auditMarkdownImageAltText("\n");
|
|
794
|
+
// { images: [...], issues: [{ line: 1, type: "empty-alt", ... }, { line: 2, type: "redundant-prefix", ... }], imageCount: 2 }
|
|
795
|
+
|
|
796
|
+
// Compute a trade's position size and risk from account size, entry, and stop-loss
|
|
797
|
+
import { calculatePositionSize } from "@utilix-tech/sdk/units";
|
|
798
|
+
calculatePositionSize({ accountSize: 10000, riskPercent: 1, entryPrice: 50, stopLossPrice: 48, targetPrice: 56 });
|
|
799
|
+
// { direction: "long", riskAmount: 100, perUnitRisk: 2, positionSizeUnits: 50, positionValue: 2500, dollarRisk: 100, riskRewardRatio: 3, targetOnCorrectSide: true }
|
|
800
|
+
|
|
801
|
+
// Scan text for weasel words that imply evidence without naming a source
|
|
802
|
+
import { detectWeaselWords } from "@utilix-tech/sdk/text";
|
|
803
|
+
detectWeaselWords("Studies show that many experts believe this works.");
|
|
804
|
+
// { totalWords: 8, totalMatches: 2, density: 25, matches: [{ phrase: "many experts believe", count: 1, indices: [...] }, { phrase: "studies show", count: 1, indices: [...] }] }
|
|
785
805
|
```
|
|
786
806
|
|
|
787
807
|
---
|
|
@@ -29,6 +29,7 @@ __export(text_exports, {
|
|
|
29
29
|
detectDelimiter: () => detectDelimiter,
|
|
30
30
|
detectFillerWords: () => detectFillerWords,
|
|
31
31
|
detectPassiveVoice: () => detectPassiveVoice,
|
|
32
|
+
detectWeaselWords: () => detectWeaselWords,
|
|
32
33
|
detectWordyPhrases: () => detectWordyPhrases,
|
|
33
34
|
diffLines: () => diffLines,
|
|
34
35
|
diffLinesSimple: () => diffLinesSimple,
|
|
@@ -3330,5 +3331,61 @@ function checkAcronymExpansion(text) {
|
|
|
3330
3331
|
issues.sort((a, b) => a.index - b.index);
|
|
3331
3332
|
return { acronyms, issues };
|
|
3332
3333
|
}
|
|
3334
|
+
var WEASEL_PHRASES = [
|
|
3335
|
+
"many experts believe",
|
|
3336
|
+
"some experts say",
|
|
3337
|
+
"experts agree",
|
|
3338
|
+
"critics argue",
|
|
3339
|
+
"studies show",
|
|
3340
|
+
"studies have shown",
|
|
3341
|
+
"research shows",
|
|
3342
|
+
"research suggests",
|
|
3343
|
+
"it is widely believed",
|
|
3344
|
+
"it is widely known",
|
|
3345
|
+
"it is widely regarded",
|
|
3346
|
+
"it is generally accepted",
|
|
3347
|
+
"it is often said",
|
|
3348
|
+
"it has been suggested",
|
|
3349
|
+
"it is said that",
|
|
3350
|
+
"some say",
|
|
3351
|
+
"some people believe",
|
|
3352
|
+
"some people think",
|
|
3353
|
+
"many believe",
|
|
3354
|
+
"many people think",
|
|
3355
|
+
"many claim",
|
|
3356
|
+
"observers note",
|
|
3357
|
+
"sources say",
|
|
3358
|
+
"according to some",
|
|
3359
|
+
"widely regarded as",
|
|
3360
|
+
"many consider",
|
|
3361
|
+
"some scientists believe",
|
|
3362
|
+
"some argue",
|
|
3363
|
+
"reportedly",
|
|
3364
|
+
"allegedly"
|
|
3365
|
+
];
|
|
3366
|
+
function _weaselRegex(phrase) {
|
|
3367
|
+
const tokens = phrase.split(/\s+/).map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
|
|
3368
|
+
return new RegExp("\\b" + tokens.join("\\s+") + "\\b", "gi");
|
|
3369
|
+
}
|
|
3370
|
+
function detectWeaselWords(text) {
|
|
3371
|
+
const totalWords = (text.match(/[A-Za-z0-9']+/g) ?? []).length;
|
|
3372
|
+
const matches = [];
|
|
3373
|
+
for (const phrase of WEASEL_PHRASES) {
|
|
3374
|
+
const re = _weaselRegex(phrase);
|
|
3375
|
+
const indices = [];
|
|
3376
|
+
let m;
|
|
3377
|
+
while ((m = re.exec(text)) !== null) {
|
|
3378
|
+
indices.push(m.index);
|
|
3379
|
+
if (m.index === re.lastIndex) re.lastIndex++;
|
|
3380
|
+
}
|
|
3381
|
+
if (indices.length > 0) {
|
|
3382
|
+
matches.push({ phrase, count: indices.length, indices });
|
|
3383
|
+
}
|
|
3384
|
+
}
|
|
3385
|
+
matches.sort((a, b) => b.count - a.count || a.phrase.localeCompare(b.phrase));
|
|
3386
|
+
const totalMatches = matches.reduce((s, x) => s + x.count, 0);
|
|
3387
|
+
const density = totalWords > 0 ? Math.round(totalMatches / totalWords * 1e3) / 10 : 0;
|
|
3388
|
+
return { totalWords, totalMatches, density, matches };
|
|
3389
|
+
}
|
|
3333
3390
|
|
|
3334
|
-
export { CASE_FORMATS, DEFAULT_CONVERT_OPTIONS, EMOJI_TABLE, ESCAPE_MODES, LINE_OPS, MORSE_CODE, addBorder, analyzeKeywordDensity, analyzeSentenceLengths, analyzeText, applyOp, applyOps, calculateStringDistance, centerText, checkAcronymExpansion, checkDashUsage, checkOxfordCommaConsistency, convertAll, convertCase, countWords, csvToHtml, csvToMarkdown, detectDelimiter, detectFillerWords, detectPassiveVoice, detectWordyPhrases, diffLines, diffLinesSimple, diffStats, escapeAll, escapeString, extractHeadings, formatReadingTime, generate, generateDiff, generateHtmlTable, generateMarkdownTable, generateParagraphs, generateSentences, generateWords, getAvailableFonts, getEmojiByCategory, getEmojiByChar, getEmojiByShortcode, getEmojiCategories, getMorseForChar, getMorseTiming, htmlToMarkdown, isValidMorse, markdownToHtml, morseToText, numberToOrdinal, numberToRoman, numberToWords, ordinalWords, parseDiff, parseTableData, readabilityScore, renderMarkdown, romanToNumber, scoreReadability, searchEmoji, sentenceCount, slugify, slugifyAll, syllableCount, textToAscii, textToMorse, text_exports, unescapeString, wordFrequency };
|
|
3391
|
+
export { CASE_FORMATS, DEFAULT_CONVERT_OPTIONS, EMOJI_TABLE, ESCAPE_MODES, LINE_OPS, MORSE_CODE, addBorder, analyzeKeywordDensity, analyzeSentenceLengths, analyzeText, applyOp, applyOps, calculateStringDistance, centerText, checkAcronymExpansion, checkDashUsage, checkOxfordCommaConsistency, convertAll, convertCase, countWords, csvToHtml, csvToMarkdown, detectDelimiter, detectFillerWords, detectPassiveVoice, detectWeaselWords, detectWordyPhrases, diffLines, diffLinesSimple, diffStats, escapeAll, escapeString, extractHeadings, formatReadingTime, generate, generateDiff, generateHtmlTable, generateMarkdownTable, generateParagraphs, generateSentences, generateWords, getAvailableFonts, getEmojiByCategory, getEmojiByChar, getEmojiByShortcode, getEmojiCategories, getMorseForChar, getMorseTiming, htmlToMarkdown, isValidMorse, markdownToHtml, morseToText, numberToOrdinal, numberToRoman, numberToWords, ordinalWords, parseDiff, parseTableData, readabilityScore, renderMarkdown, romanToNumber, scoreReadability, searchEmoji, sentenceCount, slugify, slugifyAll, syllableCount, textToAscii, textToMorse, text_exports, unescapeString, wordFrequency };
|
|
@@ -46,6 +46,7 @@ __export(units_exports, {
|
|
|
46
46
|
calculateMovingAverages: () => calculateMovingAverages,
|
|
47
47
|
calculatePaybackPeriod: () => calculatePaybackPeriod,
|
|
48
48
|
calculatePercentageChange: () => calculatePercentageChange,
|
|
49
|
+
calculatePositionSize: () => calculatePositionSize,
|
|
49
50
|
calculateRealRateOfReturn: () => calculateRealRateOfReturn,
|
|
50
51
|
calculateRequiredBandwidth: () => calculateRequiredBandwidth,
|
|
51
52
|
calculateRoi: () => calculateRoi,
|
|
@@ -116,6 +117,7 @@ __export(units_exports, {
|
|
|
116
117
|
validateIban: () => validateIban,
|
|
117
118
|
validateIsbn: () => validateIsbn,
|
|
118
119
|
validateIsin: () => validateIsin,
|
|
120
|
+
validateRoutingNumber: () => validateRoutingNumber,
|
|
119
121
|
validateVin: () => validateVin,
|
|
120
122
|
viewportToPx: () => viewportToPx
|
|
121
123
|
});
|
|
@@ -3217,5 +3219,90 @@ function estimateAudioFileSize(input) {
|
|
|
3217
3219
|
}
|
|
3218
3220
|
return { error: 'mode must be "pcm" or "compressed"' };
|
|
3219
3221
|
}
|
|
3222
|
+
var ABA_FEDERAL_RESERVE_BANKS = {
|
|
3223
|
+
1: "Boston",
|
|
3224
|
+
2: "New York",
|
|
3225
|
+
3: "Philadelphia",
|
|
3226
|
+
4: "Cleveland",
|
|
3227
|
+
5: "Richmond",
|
|
3228
|
+
6: "Atlanta",
|
|
3229
|
+
7: "Chicago",
|
|
3230
|
+
8: "St. Louis",
|
|
3231
|
+
9: "Minneapolis",
|
|
3232
|
+
10: "Kansas City",
|
|
3233
|
+
11: "Dallas",
|
|
3234
|
+
12: "San Francisco"
|
|
3235
|
+
};
|
|
3236
|
+
function abaDistrictAndType(prefix) {
|
|
3237
|
+
if (prefix >= 1 && prefix <= 12) {
|
|
3238
|
+
return { type: "primary", district: { code: prefix, bank: ABA_FEDERAL_RESERVE_BANKS[prefix] } };
|
|
3239
|
+
}
|
|
3240
|
+
if (prefix >= 21 && prefix <= 32) {
|
|
3241
|
+
const code = prefix - 20;
|
|
3242
|
+
return { type: "thrift", district: { code, bank: ABA_FEDERAL_RESERVE_BANKS[code] } };
|
|
3243
|
+
}
|
|
3244
|
+
if (prefix >= 61 && prefix <= 72) {
|
|
3245
|
+
const code = prefix - 60;
|
|
3246
|
+
return { type: "electronic", district: { code, bank: ABA_FEDERAL_RESERVE_BANKS[code] } };
|
|
3247
|
+
}
|
|
3248
|
+
if (prefix === 80) {
|
|
3249
|
+
return { type: "traveler-check", district: null };
|
|
3250
|
+
}
|
|
3251
|
+
return { type: "unknown", district: null };
|
|
3252
|
+
}
|
|
3253
|
+
function formatRoutingNumber(digits) {
|
|
3254
|
+
return `${digits.slice(0, 4)} ${digits.slice(4, 8)} ${digits.slice(8)}`;
|
|
3255
|
+
}
|
|
3256
|
+
function validateRoutingNumber(input) {
|
|
3257
|
+
if (!input || !input.trim()) return { error: "Input is empty" };
|
|
3258
|
+
const digits = input.replace(/[\s-]/g, "");
|
|
3259
|
+
if (!/^\d+$/.test(digits)) return { error: "Routing number must contain only digits, spaces, or hyphens" };
|
|
3260
|
+
if (digits.length !== 9) return { error: `Routing number length (${digits.length}) must be exactly 9 digits` };
|
|
3261
|
+
const d = digits.split("").map(Number);
|
|
3262
|
+
const sum = 3 * (d[0] + d[3] + d[6]) + 7 * (d[1] + d[4] + d[7]) + 1 * (d[2] + d[5] + d[8]);
|
|
3263
|
+
const checksumValid = sum % 10 === 0;
|
|
3264
|
+
const prefix = Number(digits.slice(0, 2));
|
|
3265
|
+
const { type, district } = abaDistrictAndType(prefix);
|
|
3266
|
+
return {
|
|
3267
|
+
valid: checksumValid,
|
|
3268
|
+
checksumValid,
|
|
3269
|
+
length: digits.length,
|
|
3270
|
+
formatted: formatRoutingNumber(digits),
|
|
3271
|
+
routingNumberType: type,
|
|
3272
|
+
federalReserveDistrict: district
|
|
3273
|
+
};
|
|
3274
|
+
}
|
|
3275
|
+
function calculatePositionSize(input) {
|
|
3276
|
+
const { accountSize, riskPercent, entryPrice, stopLossPrice, targetPrice } = input;
|
|
3277
|
+
if (!(accountSize > 0)) return { error: "accountSize must be greater than 0" };
|
|
3278
|
+
if (!(riskPercent > 0) || riskPercent > 100) return { error: "riskPercent must be greater than 0 and at most 100" };
|
|
3279
|
+
if (!(entryPrice > 0)) return { error: "entryPrice must be greater than 0" };
|
|
3280
|
+
if (!(stopLossPrice > 0)) return { error: "stopLossPrice must be greater than 0" };
|
|
3281
|
+
if (entryPrice === stopLossPrice) return { error: "entryPrice and stopLossPrice must differ" };
|
|
3282
|
+
if (targetPrice !== void 0 && !(targetPrice > 0)) return { error: "targetPrice must be greater than 0" };
|
|
3283
|
+
const direction = stopLossPrice < entryPrice ? "long" : "short";
|
|
3284
|
+
const riskAmount = accountSize * (riskPercent / 100);
|
|
3285
|
+
const perUnitRisk = Math.abs(entryPrice - stopLossPrice);
|
|
3286
|
+
const positionSizeUnits = Math.floor(riskAmount / perUnitRisk);
|
|
3287
|
+
const positionValue = positionSizeUnits * entryPrice;
|
|
3288
|
+
const dollarRisk = positionSizeUnits * perUnitRisk;
|
|
3289
|
+
let riskRewardRatio = null;
|
|
3290
|
+
let targetOnCorrectSide = null;
|
|
3291
|
+
if (targetPrice !== void 0) {
|
|
3292
|
+
const reward = Math.abs(targetPrice - entryPrice);
|
|
3293
|
+
riskRewardRatio = Math.round(reward / perUnitRisk * 100) / 100;
|
|
3294
|
+
targetOnCorrectSide = direction === "long" ? targetPrice > entryPrice : targetPrice < entryPrice;
|
|
3295
|
+
}
|
|
3296
|
+
return {
|
|
3297
|
+
direction,
|
|
3298
|
+
riskAmount: Math.round(riskAmount * 100) / 100,
|
|
3299
|
+
perUnitRisk: Math.round(perUnitRisk * 1e4) / 1e4,
|
|
3300
|
+
positionSizeUnits,
|
|
3301
|
+
positionValue: Math.round(positionValue * 100) / 100,
|
|
3302
|
+
dollarRisk: Math.round(dollarRisk * 100) / 100,
|
|
3303
|
+
riskRewardRatio,
|
|
3304
|
+
targetOnCorrectSide
|
|
3305
|
+
};
|
|
3306
|
+
}
|
|
3220
3307
|
|
|
3221
|
-
export { BASE_LABELS, BASE_PREFIXES, BYTE_UNITS, COMMON_CURRENCIES, COMMON_LOCALES, COMMON_PERMISSIONS, COMMON_RATIOS, COMMON_SIZES, COMMON_TAX_RATES, COMMON_TIP_PERCENTAGES, COMMON_VIEWPORTS, GPA_GRADE_POINTS, USD_DENOMINATIONS, applySuccessiveDiscounts, autoFormat, bumpVersion, calcAspectRatio, calcSubnet, calculateAnnuityPayout, calculateBlendedLoanRate, calculateBreakEven, calculateCashBreakdown, calculateCashRounding, calculateCdMaturity, calculateChange, calculateCompoundInterest, calculateCreditCardMinimumPayment, calculateCreditUtilization, calculateDebtToIncomeRatio, calculateDepreciationSchedule, calculateDiscount, calculateEmi, calculateExtraPaymentPayoff, calculateFreelancerRate, calculateGpa, calculateLoan, calculateLoanPrepaymentPenalty, calculateLoanRefinance, calculateMarginMarkup, calculateMortgagePoints, calculateMovingAverages, calculatePaybackPeriod, calculatePercentageChange, calculateRealRateOfReturn, calculateRequiredBandwidth, calculateRoi, calculateRuleOf72, calculateSalesCommission, calculateSavingsGoal, calculateSimpleInterest, calculateTax, calculateTaxEquivalentYield, calculateTimeValue, calculateTipSplit, calculateTransferTime, calculateVideoBitrate, compareSemver, compareUnitPrices, convert, convertAprApy, convertBytes, convertIp, coverBox, decimalToIp, decimalToIpCidr, describePermissions, detectNegativeAmortization, estimateAudioFileSize, fitIntoBox, formatNumber, formatValue, formatVwValue, formatWithSeparator, gcd, intersectSemverRanges, ipFromBinary, ipFromDecimal, ipFromHex, ipToBinary, ipToDecimal, ipToDecimalCidr, ipToHex, ipToOctal, isValid, isValidCidr, isValidIp, isValidIpv4, marginToMarkup, markupToMargin, octalToPermissions, parseFileSize, parseInput, parseNumberString, parseSemver, permissionsToChmod, permissionsToOctal, permissionsToSymbolic, planDebtPayoff, ptToPx, pxToAll, pxToViewport, remToPx, satisfiesRange, scaleByHeight, scaleByWidth, sortVersions, splitSubnet, symbolicToPermissions, units_exports, validateBarcode, validateCardNumber, validateIban, validateIsbn, validateIsin, validateVin, viewportToPx };
|
|
3308
|
+
export { BASE_LABELS, BASE_PREFIXES, BYTE_UNITS, COMMON_CURRENCIES, COMMON_LOCALES, COMMON_PERMISSIONS, COMMON_RATIOS, COMMON_SIZES, COMMON_TAX_RATES, COMMON_TIP_PERCENTAGES, COMMON_VIEWPORTS, GPA_GRADE_POINTS, USD_DENOMINATIONS, applySuccessiveDiscounts, autoFormat, bumpVersion, calcAspectRatio, calcSubnet, calculateAnnuityPayout, calculateBlendedLoanRate, calculateBreakEven, calculateCashBreakdown, calculateCashRounding, calculateCdMaturity, calculateChange, calculateCompoundInterest, calculateCreditCardMinimumPayment, calculateCreditUtilization, calculateDebtToIncomeRatio, calculateDepreciationSchedule, calculateDiscount, calculateEmi, calculateExtraPaymentPayoff, calculateFreelancerRate, calculateGpa, calculateLoan, calculateLoanPrepaymentPenalty, calculateLoanRefinance, calculateMarginMarkup, calculateMortgagePoints, calculateMovingAverages, calculatePaybackPeriod, calculatePercentageChange, calculatePositionSize, calculateRealRateOfReturn, calculateRequiredBandwidth, calculateRoi, calculateRuleOf72, calculateSalesCommission, calculateSavingsGoal, calculateSimpleInterest, calculateTax, calculateTaxEquivalentYield, calculateTimeValue, calculateTipSplit, calculateTransferTime, calculateVideoBitrate, compareSemver, compareUnitPrices, convert, convertAprApy, convertBytes, convertIp, coverBox, decimalToIp, decimalToIpCidr, describePermissions, detectNegativeAmortization, estimateAudioFileSize, fitIntoBox, formatNumber, formatValue, formatVwValue, formatWithSeparator, gcd, intersectSemverRanges, ipFromBinary, ipFromDecimal, ipFromHex, ipToBinary, ipToDecimal, ipToDecimalCidr, ipToHex, ipToOctal, isValid, isValidCidr, isValidIp, isValidIpv4, marginToMarkup, markupToMargin, octalToPermissions, parseFileSize, parseInput, parseNumberString, parseSemver, permissionsToChmod, permissionsToOctal, permissionsToSymbolic, planDebtPayoff, ptToPx, pxToAll, pxToViewport, remToPx, satisfiesRange, scaleByHeight, scaleByWidth, sortVersions, splitSubnet, symbolicToPermissions, units_exports, validateBarcode, validateCardNumber, validateIban, validateIsbn, validateIsin, validateRoutingNumber, validateVin, viewportToPx };
|
|
@@ -7,6 +7,7 @@ var data_exports = {};
|
|
|
7
7
|
__export(data_exports, {
|
|
8
8
|
alignMarkdownTables: () => alignMarkdownTables,
|
|
9
9
|
analyzeCaptionSpeed: () => analyzeCaptionSpeed,
|
|
10
|
+
auditMarkdownImageAltText: () => auditMarkdownImageAltText,
|
|
10
11
|
calculateMarkdownTaskListProgress: () => calculateMarkdownTaskListProgress,
|
|
11
12
|
checkMarkdownInternalLinks: () => checkMarkdownInternalLinks,
|
|
12
13
|
convertSubtitles: () => convertSubtitles,
|
|
@@ -2223,5 +2224,89 @@ function summarizeCsvColumnStats(input, options) {
|
|
|
2223
2224
|
});
|
|
2224
2225
|
return { columns, rowCount: parsed.rows.length };
|
|
2225
2226
|
}
|
|
2227
|
+
var MARKDOWN_IMAGE_RE = /!\[([^\]]*)\]\(([^)\s]+)(?:\s+"[^"]*")?\)/g;
|
|
2228
|
+
var MARKDOWN_IMAGE_GENERIC_ALT_WORDS = /* @__PURE__ */ new Set([
|
|
2229
|
+
"image",
|
|
2230
|
+
"picture",
|
|
2231
|
+
"photo",
|
|
2232
|
+
"photograph",
|
|
2233
|
+
"pic",
|
|
2234
|
+
"img",
|
|
2235
|
+
"graphic",
|
|
2236
|
+
"screenshot",
|
|
2237
|
+
"icon",
|
|
2238
|
+
"logo"
|
|
2239
|
+
]);
|
|
2240
|
+
var MARKDOWN_IMAGE_REDUNDANT_PREFIX_RE = /^(image|picture|photo|photograph)\s+of\s+/i;
|
|
2241
|
+
var MARKDOWN_IMAGE_FILENAME_EXT_RE = /\.(png|jpe?g|gif|svg|webp|bmp|avif|tiff?)$/i;
|
|
2242
|
+
function markdownImageBasenameWithoutExt(src) {
|
|
2243
|
+
const withoutQuery = src.split(/[?#]/)[0];
|
|
2244
|
+
const file = withoutQuery.split("/").pop() ?? withoutQuery;
|
|
2245
|
+
return file.replace(MARKDOWN_IMAGE_FILENAME_EXT_RE, "");
|
|
2246
|
+
}
|
|
2247
|
+
function auditMarkdownImageAltText(markdown) {
|
|
2248
|
+
if (typeof markdown !== "string") return { error: "markdown must be a string" };
|
|
2249
|
+
const lines = markdown.replace(/\r\n/g, "\n").split("\n");
|
|
2250
|
+
const images = [];
|
|
2251
|
+
const issues = [];
|
|
2252
|
+
let inFence = false;
|
|
2253
|
+
let fenceMarker = "";
|
|
2254
|
+
lines.forEach((line, idx) => {
|
|
2255
|
+
const fenceMatch = line.match(/^\s*(```+|~~~+)/);
|
|
2256
|
+
if (fenceMatch) {
|
|
2257
|
+
if (!inFence) {
|
|
2258
|
+
inFence = true;
|
|
2259
|
+
fenceMarker = fenceMatch[1][0];
|
|
2260
|
+
} else if (fenceMatch[1][0] === fenceMarker) {
|
|
2261
|
+
inFence = false;
|
|
2262
|
+
}
|
|
2263
|
+
return;
|
|
2264
|
+
}
|
|
2265
|
+
if (inFence) return;
|
|
2266
|
+
const lineNo = idx + 1;
|
|
2267
|
+
MARKDOWN_IMAGE_RE.lastIndex = 0;
|
|
2268
|
+
let match;
|
|
2269
|
+
while ((match = MARKDOWN_IMAGE_RE.exec(line)) !== null) {
|
|
2270
|
+
const alt = match[1].trim();
|
|
2271
|
+
const src = match[2];
|
|
2272
|
+
images.push({ line: lineNo, alt, src });
|
|
2273
|
+
if (alt === "") {
|
|
2274
|
+
issues.push({
|
|
2275
|
+
line: lineNo,
|
|
2276
|
+
type: "empty-alt",
|
|
2277
|
+
src,
|
|
2278
|
+
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.`
|
|
2279
|
+
});
|
|
2280
|
+
continue;
|
|
2281
|
+
}
|
|
2282
|
+
if (MARKDOWN_IMAGE_GENERIC_ALT_WORDS.has(alt.toLowerCase())) {
|
|
2283
|
+
issues.push({
|
|
2284
|
+
line: lineNo,
|
|
2285
|
+
type: "generic-alt",
|
|
2286
|
+
src,
|
|
2287
|
+
message: `Alt text "${alt}" at line ${lineNo} is a generic placeholder and doesn't describe the image's content.`
|
|
2288
|
+
});
|
|
2289
|
+
}
|
|
2290
|
+
if (MARKDOWN_IMAGE_REDUNDANT_PREFIX_RE.test(alt)) {
|
|
2291
|
+
issues.push({
|
|
2292
|
+
line: lineNo,
|
|
2293
|
+
type: "redundant-prefix",
|
|
2294
|
+
src,
|
|
2295
|
+
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.`
|
|
2296
|
+
});
|
|
2297
|
+
}
|
|
2298
|
+
const baseName = markdownImageBasenameWithoutExt(src);
|
|
2299
|
+
if (MARKDOWN_IMAGE_FILENAME_EXT_RE.test(alt) || baseName !== "" && alt.toLowerCase() === baseName.toLowerCase()) {
|
|
2300
|
+
issues.push({
|
|
2301
|
+
line: lineNo,
|
|
2302
|
+
type: "filename-as-alt",
|
|
2303
|
+
src,
|
|
2304
|
+
message: `Alt text "${alt}" at line ${lineNo} looks like the image's own filename rather than a description.`
|
|
2305
|
+
});
|
|
2306
|
+
}
|
|
2307
|
+
}
|
|
2308
|
+
});
|
|
2309
|
+
return { images, issues, imageCount: images.length };
|
|
2310
|
+
}
|
|
2226
2311
|
|
|
2227
|
-
export { alignMarkdownTables, analyzeCaptionSpeed, calculateMarkdownTaskListProgress, checkMarkdownInternalLinks, convertSubtitles, csvToJson, csvToSqlInsert, data_exports, dedupeNdjson, detectDelimiter, detectSubtitleFormat, diffEnvExample, envToExport, envToJson, findCsvDuplicateRows, findYamlDuplicateKeys, formatNdjson, formatSubtitleTimestamp, formatToml, formatXml, generateMarkdownToc, getSection, getSectionNames, getTomlStats, getXmlStats, getYamlStats, inferCsvColumnTypes, iniToJson, jsonArrayToNdjson, jsonToIni, jsonToToml, jsonToXml, minifyNdjson, minifyToml, minifyXml, ndjsonToCsv, ndjsonToJsonArray, parseCsv, parseEnv, parseFrontMatter, parseIni, parseSubtitleTimestamp, parseSubtitles, parseXmlToObject, resolveYamlAnchors, serializeSubtitles, shiftSubtitles, stringifyIni, summarizeCsvColumnStats, toCsvString, tomlToJson, validateEnvKey, validateIni, validateMarkdownHeadingHierarchy, validateNdjson, validateToml, validateXml, validateYaml, xmlToJson };
|
|
2312
|
+
export { alignMarkdownTables, analyzeCaptionSpeed, auditMarkdownImageAltText, calculateMarkdownTaskListProgress, checkMarkdownInternalLinks, convertSubtitles, csvToJson, csvToSqlInsert, data_exports, dedupeNdjson, detectDelimiter, detectSubtitleFormat, diffEnvExample, envToExport, envToJson, findCsvDuplicateRows, findYamlDuplicateKeys, formatNdjson, formatSubtitleTimestamp, formatToml, formatXml, generateMarkdownToc, getSection, getSectionNames, getTomlStats, getXmlStats, getYamlStats, inferCsvColumnTypes, iniToJson, jsonArrayToNdjson, jsonToIni, jsonToToml, jsonToXml, minifyNdjson, minifyToml, minifyXml, ndjsonToCsv, ndjsonToJsonArray, parseCsv, parseEnv, parseFrontMatter, parseIni, parseSubtitleTimestamp, parseSubtitles, parseXmlToObject, resolveYamlAnchors, serializeSubtitles, shiftSubtitles, stringifyIni, summarizeCsvColumnStats, toCsvString, tomlToJson, validateEnvKey, validateIni, validateMarkdownHeadingHierarchy, validateNdjson, validateToml, validateXml, validateYaml, xmlToJson };
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
* - markdown-internal-link-checker: checkMarkdownInternalLinks
|
|
26
26
|
* - yaml-duplicate-key-detector: findYamlDuplicateKeys
|
|
27
27
|
* - csv-column-stats-summarizer: summarizeCsvColumnStats
|
|
28
|
+
* - markdown-image-alt-text-auditor: auditMarkdownImageAltText
|
|
28
29
|
*/
|
|
29
30
|
interface ValidationResult {
|
|
30
31
|
valid: boolean;
|
|
@@ -656,6 +657,35 @@ interface CsvColumnStatsResult {
|
|
|
656
657
|
declare function summarizeCsvColumnStats(input: string, options?: CsvColumnStatsOptions): CsvColumnStatsResult | {
|
|
657
658
|
error: string;
|
|
658
659
|
};
|
|
660
|
+
type MarkdownImageAltIssueType = 'empty-alt' | 'generic-alt' | 'redundant-prefix' | 'filename-as-alt';
|
|
661
|
+
interface MarkdownImageEntry {
|
|
662
|
+
line: number;
|
|
663
|
+
alt: string;
|
|
664
|
+
src: string;
|
|
665
|
+
}
|
|
666
|
+
interface MarkdownImageAltIssue {
|
|
667
|
+
line: number;
|
|
668
|
+
type: MarkdownImageAltIssueType;
|
|
669
|
+
src: string;
|
|
670
|
+
message: string;
|
|
671
|
+
}
|
|
672
|
+
interface MarkdownImageAltTextAuditResult {
|
|
673
|
+
images: MarkdownImageEntry[];
|
|
674
|
+
issues: MarkdownImageAltIssue[];
|
|
675
|
+
imageCount: number;
|
|
676
|
+
}
|
|
677
|
+
/**
|
|
678
|
+
* Scan a Markdown document's inline images (``) and flag alt
|
|
679
|
+
* text accessibility smells: missing/empty alt text, a generic placeholder
|
|
680
|
+
* word used alone ("image", "photo"), alt text that's just the image's own
|
|
681
|
+
* filename, and a redundant "image of"/"photo of" prefix that screen
|
|
682
|
+
* readers already announce. Only inline image syntax is scanned;
|
|
683
|
+
* reference-style images (`![alt][ref]`) and raw HTML `<img>` tags are not
|
|
684
|
+
* detected, and fenced code blocks are skipped.
|
|
685
|
+
*/
|
|
686
|
+
declare function auditMarkdownImageAltText(markdown: string): MarkdownImageAltTextAuditResult | {
|
|
687
|
+
error: string;
|
|
688
|
+
};
|
|
659
689
|
|
|
660
690
|
type data_CaptionSpeedCue = CaptionSpeedCue;
|
|
661
691
|
type data_CaptionSpeedResult = CaptionSpeedResult;
|
|
@@ -687,6 +717,10 @@ type data_HeadingIssueType = HeadingIssueType;
|
|
|
687
717
|
type data_IniSection = IniSection;
|
|
688
718
|
type data_MarkdownAnchorHeading = MarkdownAnchorHeading;
|
|
689
719
|
type data_MarkdownAnchorLink = MarkdownAnchorLink;
|
|
720
|
+
type data_MarkdownImageAltIssue = MarkdownImageAltIssue;
|
|
721
|
+
type data_MarkdownImageAltIssueType = MarkdownImageAltIssueType;
|
|
722
|
+
type data_MarkdownImageAltTextAuditResult = MarkdownImageAltTextAuditResult;
|
|
723
|
+
type data_MarkdownImageEntry = MarkdownImageEntry;
|
|
690
724
|
type data_MarkdownInternalLinkCheckResult = MarkdownInternalLinkCheckResult;
|
|
691
725
|
type data_MarkdownTableAlignResult = MarkdownTableAlignResult;
|
|
692
726
|
type data_MarkdownTableColumnAlignment = MarkdownTableColumnAlignment;
|
|
@@ -717,6 +751,7 @@ type data_YamlDuplicateKeyError = YamlDuplicateKeyError;
|
|
|
717
751
|
type data_YamlDuplicateKeyResult = YamlDuplicateKeyResult;
|
|
718
752
|
declare const data_alignMarkdownTables: typeof alignMarkdownTables;
|
|
719
753
|
declare const data_analyzeCaptionSpeed: typeof analyzeCaptionSpeed;
|
|
754
|
+
declare const data_auditMarkdownImageAltText: typeof auditMarkdownImageAltText;
|
|
720
755
|
declare const data_calculateMarkdownTaskListProgress: typeof calculateMarkdownTaskListProgress;
|
|
721
756
|
declare const data_checkMarkdownInternalLinks: typeof checkMarkdownInternalLinks;
|
|
722
757
|
declare const data_convertSubtitles: typeof convertSubtitles;
|
|
@@ -774,7 +809,7 @@ declare const data_validateXml: typeof validateXml;
|
|
|
774
809
|
declare const data_validateYaml: typeof validateYaml;
|
|
775
810
|
declare const data_xmlToJson: typeof xmlToJson;
|
|
776
811
|
declare namespace data {
|
|
777
|
-
export { type data_CaptionSpeedCue as CaptionSpeedCue, type data_CaptionSpeedResult as CaptionSpeedResult, type data_ConvertedSubtitles as ConvertedSubtitles, type data_CsvColumnMostCommon as CsvColumnMostCommon, type data_CsvColumnStats as CsvColumnStats, type data_CsvColumnStatsOptions as CsvColumnStatsOptions, type data_CsvColumnStatsResult as CsvColumnStatsResult, type data_CsvColumnType as CsvColumnType, type data_CsvColumnTypeInfo as CsvColumnTypeInfo, type data_CsvColumnTypeOptions as CsvColumnTypeOptions, type data_CsvColumnTypeResult as CsvColumnTypeResult, type data_CsvDuplicateGroup as CsvDuplicateGroup, type data_CsvDuplicateOptions as CsvDuplicateOptions, type data_CsvDuplicateResult as CsvDuplicateResult, type data_CsvParseResult as CsvParseResult, type data_CsvToSqlOptions as CsvToSqlOptions, type data_CsvToSqlResult as CsvToSqlResult, type data_EnvDiffError as EnvDiffError, type data_EnvDiffResult as EnvDiffResult, type data_EnvEntry as EnvEntry, type data_EnvParseResult as EnvParseResult, type data_FrontMatterError as FrontMatterError, type data_FrontMatterResult as FrontMatterResult, type data_HeadingEntry as HeadingEntry, type data_HeadingHierarchyResult as HeadingHierarchyResult, type data_HeadingIssue as HeadingIssue, type data_HeadingIssueType as HeadingIssueType, type data_IniSection as IniSection, type data_MarkdownAnchorHeading as MarkdownAnchorHeading, type data_MarkdownAnchorLink as MarkdownAnchorLink, type data_MarkdownInternalLinkCheckResult as MarkdownInternalLinkCheckResult, type data_MarkdownTableAlignResult as MarkdownTableAlignResult, type data_MarkdownTableColumnAlignment as MarkdownTableColumnAlignment, type data_MarkdownTableInfo as MarkdownTableInfo, type data_MarkdownTaskListItem as MarkdownTaskListItem, type data_MarkdownTaskListProgressResult as MarkdownTaskListProgressResult, type data_MarkdownTaskListSectionSummary as MarkdownTaskListSectionSummary, type data_MarkdownTocEntry as MarkdownTocEntry, type data_MarkdownTocOptions as MarkdownTocOptions, type data_MarkdownTocResult as MarkdownTocResult, type data_NdjsonDedupeResult as NdjsonDedupeResult, type data_NdjsonLineResult as NdjsonLineResult, type data_NdjsonValidateResult as NdjsonValidateResult, type data_ParseOptions as ParseOptions, type data_ParsedIni as ParsedIni, type data_ParsedSubtitles as ParsedSubtitles, type data_SubtitleCue as SubtitleCue, type data_SubtitleFormat as SubtitleFormat, type data_TomlFormatResult as TomlFormatResult, type data_ValidationResult as ValidationResult, type data_XmlFormatResult as XmlFormatResult, type data_XmlToJsonOptions as XmlToJsonOptions, type data_YamlAnchorInfo as YamlAnchorInfo, type data_YamlAnchorResolveError as YamlAnchorResolveError, type data_YamlAnchorResolveResult as YamlAnchorResolveResult, type data_YamlDuplicateKeyEntry as YamlDuplicateKeyEntry, type data_YamlDuplicateKeyError as YamlDuplicateKeyError, type data_YamlDuplicateKeyResult as YamlDuplicateKeyResult, data_alignMarkdownTables as alignMarkdownTables, data_analyzeCaptionSpeed as analyzeCaptionSpeed, data_calculateMarkdownTaskListProgress as calculateMarkdownTaskListProgress, data_checkMarkdownInternalLinks as checkMarkdownInternalLinks, data_convertSubtitles as convertSubtitles, data_csvToJson as csvToJson, data_csvToSqlInsert as csvToSqlInsert, data_dedupeNdjson as dedupeNdjson, data_detectDelimiter as detectDelimiter, data_detectSubtitleFormat as detectSubtitleFormat, data_diffEnvExample as diffEnvExample, data_envToExport as envToExport, data_envToJson as envToJson, data_findCsvDuplicateRows as findCsvDuplicateRows, data_findYamlDuplicateKeys as findYamlDuplicateKeys, data_formatNdjson as formatNdjson, data_formatSubtitleTimestamp as formatSubtitleTimestamp, data_formatToml as formatToml, data_formatXml as formatXml, data_generateMarkdownToc as generateMarkdownToc, data_getSection as getSection, data_getSectionNames as getSectionNames, data_getTomlStats as getTomlStats, data_getXmlStats as getXmlStats, data_getYamlStats as getYamlStats, data_inferCsvColumnTypes as inferCsvColumnTypes, data_iniToJson as iniToJson, data_jsonArrayToNdjson as jsonArrayToNdjson, data_jsonToIni as jsonToIni, data_jsonToToml as jsonToToml, data_jsonToXml as jsonToXml, data_minifyNdjson as minifyNdjson, data_minifyToml as minifyToml, data_minifyXml as minifyXml, data_ndjsonToCsv as ndjsonToCsv, data_ndjsonToJsonArray as ndjsonToJsonArray, data_parseCsv as parseCsv, data_parseEnv as parseEnv, data_parseFrontMatter as parseFrontMatter, data_parseIni as parseIni, data_parseSubtitleTimestamp as parseSubtitleTimestamp, data_parseSubtitles as parseSubtitles, data_parseXmlToObject as parseXmlToObject, data_resolveYamlAnchors as resolveYamlAnchors, data_serializeSubtitles as serializeSubtitles, data_shiftSubtitles as shiftSubtitles, data_stringifyIni as stringifyIni, data_summarizeCsvColumnStats as summarizeCsvColumnStats, data_toCsvString as toCsvString, data_tomlToJson as tomlToJson, data_validateEnvKey as validateEnvKey, data_validateIni as validateIni, data_validateMarkdownHeadingHierarchy as validateMarkdownHeadingHierarchy, data_validateNdjson as validateNdjson, data_validateToml as validateToml, data_validateXml as validateXml, data_validateYaml as validateYaml, data_xmlToJson as xmlToJson };
|
|
812
|
+
export { type data_CaptionSpeedCue as CaptionSpeedCue, type data_CaptionSpeedResult as CaptionSpeedResult, type data_ConvertedSubtitles as ConvertedSubtitles, type data_CsvColumnMostCommon as CsvColumnMostCommon, type data_CsvColumnStats as CsvColumnStats, type data_CsvColumnStatsOptions as CsvColumnStatsOptions, type data_CsvColumnStatsResult as CsvColumnStatsResult, type data_CsvColumnType as CsvColumnType, type data_CsvColumnTypeInfo as CsvColumnTypeInfo, type data_CsvColumnTypeOptions as CsvColumnTypeOptions, type data_CsvColumnTypeResult as CsvColumnTypeResult, type data_CsvDuplicateGroup as CsvDuplicateGroup, type data_CsvDuplicateOptions as CsvDuplicateOptions, type data_CsvDuplicateResult as CsvDuplicateResult, type data_CsvParseResult as CsvParseResult, type data_CsvToSqlOptions as CsvToSqlOptions, type data_CsvToSqlResult as CsvToSqlResult, type data_EnvDiffError as EnvDiffError, type data_EnvDiffResult as EnvDiffResult, type data_EnvEntry as EnvEntry, type data_EnvParseResult as EnvParseResult, type data_FrontMatterError as FrontMatterError, type data_FrontMatterResult as FrontMatterResult, type data_HeadingEntry as HeadingEntry, type data_HeadingHierarchyResult as HeadingHierarchyResult, type data_HeadingIssue as HeadingIssue, type data_HeadingIssueType as HeadingIssueType, type data_IniSection as IniSection, type data_MarkdownAnchorHeading as MarkdownAnchorHeading, type data_MarkdownAnchorLink as MarkdownAnchorLink, type data_MarkdownImageAltIssue as MarkdownImageAltIssue, type data_MarkdownImageAltIssueType as MarkdownImageAltIssueType, type data_MarkdownImageAltTextAuditResult as MarkdownImageAltTextAuditResult, type data_MarkdownImageEntry as MarkdownImageEntry, type data_MarkdownInternalLinkCheckResult as MarkdownInternalLinkCheckResult, type data_MarkdownTableAlignResult as MarkdownTableAlignResult, type data_MarkdownTableColumnAlignment as MarkdownTableColumnAlignment, type data_MarkdownTableInfo as MarkdownTableInfo, type data_MarkdownTaskListItem as MarkdownTaskListItem, type data_MarkdownTaskListProgressResult as MarkdownTaskListProgressResult, type data_MarkdownTaskListSectionSummary as MarkdownTaskListSectionSummary, type data_MarkdownTocEntry as MarkdownTocEntry, type data_MarkdownTocOptions as MarkdownTocOptions, type data_MarkdownTocResult as MarkdownTocResult, type data_NdjsonDedupeResult as NdjsonDedupeResult, type data_NdjsonLineResult as NdjsonLineResult, type data_NdjsonValidateResult as NdjsonValidateResult, type data_ParseOptions as ParseOptions, type data_ParsedIni as ParsedIni, type data_ParsedSubtitles as ParsedSubtitles, type data_SubtitleCue as SubtitleCue, type data_SubtitleFormat as SubtitleFormat, type data_TomlFormatResult as TomlFormatResult, type data_ValidationResult as ValidationResult, type data_XmlFormatResult as XmlFormatResult, type data_XmlToJsonOptions as XmlToJsonOptions, type data_YamlAnchorInfo as YamlAnchorInfo, type data_YamlAnchorResolveError as YamlAnchorResolveError, type data_YamlAnchorResolveResult as YamlAnchorResolveResult, type data_YamlDuplicateKeyEntry as YamlDuplicateKeyEntry, type data_YamlDuplicateKeyError as YamlDuplicateKeyError, type data_YamlDuplicateKeyResult as YamlDuplicateKeyResult, data_alignMarkdownTables as alignMarkdownTables, data_analyzeCaptionSpeed as analyzeCaptionSpeed, data_auditMarkdownImageAltText as auditMarkdownImageAltText, data_calculateMarkdownTaskListProgress as calculateMarkdownTaskListProgress, data_checkMarkdownInternalLinks as checkMarkdownInternalLinks, data_convertSubtitles as convertSubtitles, data_csvToJson as csvToJson, data_csvToSqlInsert as csvToSqlInsert, data_dedupeNdjson as dedupeNdjson, data_detectDelimiter as detectDelimiter, data_detectSubtitleFormat as detectSubtitleFormat, data_diffEnvExample as diffEnvExample, data_envToExport as envToExport, data_envToJson as envToJson, data_findCsvDuplicateRows as findCsvDuplicateRows, data_findYamlDuplicateKeys as findYamlDuplicateKeys, data_formatNdjson as formatNdjson, data_formatSubtitleTimestamp as formatSubtitleTimestamp, data_formatToml as formatToml, data_formatXml as formatXml, data_generateMarkdownToc as generateMarkdownToc, data_getSection as getSection, data_getSectionNames as getSectionNames, data_getTomlStats as getTomlStats, data_getXmlStats as getXmlStats, data_getYamlStats as getYamlStats, data_inferCsvColumnTypes as inferCsvColumnTypes, data_iniToJson as iniToJson, data_jsonArrayToNdjson as jsonArrayToNdjson, data_jsonToIni as jsonToIni, data_jsonToToml as jsonToToml, data_jsonToXml as jsonToXml, data_minifyNdjson as minifyNdjson, data_minifyToml as minifyToml, data_minifyXml as minifyXml, data_ndjsonToCsv as ndjsonToCsv, data_ndjsonToJsonArray as ndjsonToJsonArray, data_parseCsv as parseCsv, data_parseEnv as parseEnv, data_parseFrontMatter as parseFrontMatter, data_parseIni as parseIni, data_parseSubtitleTimestamp as parseSubtitleTimestamp, data_parseSubtitles as parseSubtitles, data_parseXmlToObject as parseXmlToObject, data_resolveYamlAnchors as resolveYamlAnchors, data_serializeSubtitles as serializeSubtitles, data_shiftSubtitles as shiftSubtitles, data_stringifyIni as stringifyIni, data_summarizeCsvColumnStats as summarizeCsvColumnStats, data_toCsvString as toCsvString, data_tomlToJson as tomlToJson, data_validateEnvKey as validateEnvKey, data_validateIni as validateIni, data_validateMarkdownHeadingHierarchy as validateMarkdownHeadingHierarchy, data_validateNdjson as validateNdjson, data_validateToml as validateToml, data_validateXml as validateXml, data_validateYaml as validateYaml, data_xmlToJson as xmlToJson };
|
|
778
813
|
}
|
|
779
814
|
|
|
780
|
-
export { type
|
|
815
|
+
export { type TomlFormatResult as $, type MarkdownImageAltIssueType as A, type MarkdownImageAltTextAuditResult as B, type CaptionSpeedCue as C, type MarkdownImageEntry as D, type EnvDiffError as E, type FrontMatterError as F, type MarkdownInternalLinkCheckResult as G, type HeadingEntry as H, type IniSection as I, type MarkdownTableAlignResult as J, type MarkdownTableColumnAlignment as K, type MarkdownTableInfo as L, type MarkdownAnchorHeading as M, type MarkdownTaskListItem as N, type MarkdownTaskListProgressResult as O, type MarkdownTaskListSectionSummary as P, type MarkdownTocEntry as Q, type MarkdownTocOptions as R, type MarkdownTocResult as S, type NdjsonDedupeResult as T, type NdjsonLineResult as U, type NdjsonValidateResult as V, type ParseOptions as W, type ParsedIni as X, type ParsedSubtitles as Y, type SubtitleCue as Z, type SubtitleFormat as _, type CaptionSpeedResult as a, validateNdjson as a$, type ValidationResult as a0, type XmlFormatResult as a1, type XmlToJsonOptions as a2, type YamlAnchorInfo as a3, type YamlAnchorResolveError as a4, type YamlAnchorResolveResult as a5, type YamlDuplicateKeyEntry as a6, type YamlDuplicateKeyError as a7, type YamlDuplicateKeyResult as a8, alignMarkdownTables as a9, iniToJson as aA, jsonArrayToNdjson as aB, jsonToIni as aC, jsonToToml as aD, jsonToXml as aE, minifyNdjson as aF, minifyToml as aG, minifyXml as aH, ndjsonToCsv as aI, ndjsonToJsonArray as aJ, parseCsv as aK, parseEnv as aL, parseFrontMatter as aM, parseIni as aN, parseSubtitleTimestamp as aO, parseSubtitles as aP, parseXmlToObject as aQ, resolveYamlAnchors as aR, serializeSubtitles as aS, shiftSubtitles as aT, stringifyIni as aU, summarizeCsvColumnStats as aV, toCsvString as aW, tomlToJson as aX, validateEnvKey as aY, validateIni as aZ, validateMarkdownHeadingHierarchy as a_, analyzeCaptionSpeed as aa, auditMarkdownImageAltText as ab, calculateMarkdownTaskListProgress as ac, checkMarkdownInternalLinks as ad, convertSubtitles as ae, csvToJson as af, csvToSqlInsert as ag, dedupeNdjson as ah, detectDelimiter as ai, detectSubtitleFormat as aj, diffEnvExample as ak, envToExport as al, envToJson as am, findCsvDuplicateRows as an, findYamlDuplicateKeys as ao, formatNdjson as ap, formatSubtitleTimestamp as aq, formatToml as ar, formatXml as as, generateMarkdownToc as at, getSection as au, getSectionNames as av, getTomlStats as aw, getXmlStats as ax, getYamlStats as ay, inferCsvColumnTypes as az, type ConvertedSubtitles as b, validateToml as b0, validateXml as b1, validateYaml as b2, xmlToJson as b3, type CsvColumnMostCommon as c, data as d, type CsvColumnStats as e, type CsvColumnStatsOptions as f, type CsvColumnStatsResult as g, type CsvColumnType as h, type CsvColumnTypeInfo as i, type CsvColumnTypeOptions as j, type CsvColumnTypeResult as k, type CsvDuplicateGroup as l, type CsvDuplicateOptions as m, type CsvDuplicateResult as n, type CsvParseResult as o, type CsvToSqlOptions as p, type CsvToSqlResult as q, type EnvDiffResult as r, type EnvEntry as s, type EnvParseResult as t, type FrontMatterResult as u, type HeadingHierarchyResult as v, type HeadingIssue as w, type HeadingIssueType as x, type MarkdownAnchorLink as y, type MarkdownImageAltIssue as z };
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
* - markdown-internal-link-checker: checkMarkdownInternalLinks
|
|
26
26
|
* - yaml-duplicate-key-detector: findYamlDuplicateKeys
|
|
27
27
|
* - csv-column-stats-summarizer: summarizeCsvColumnStats
|
|
28
|
+
* - markdown-image-alt-text-auditor: auditMarkdownImageAltText
|
|
28
29
|
*/
|
|
29
30
|
interface ValidationResult {
|
|
30
31
|
valid: boolean;
|
|
@@ -656,6 +657,35 @@ interface CsvColumnStatsResult {
|
|
|
656
657
|
declare function summarizeCsvColumnStats(input: string, options?: CsvColumnStatsOptions): CsvColumnStatsResult | {
|
|
657
658
|
error: string;
|
|
658
659
|
};
|
|
660
|
+
type MarkdownImageAltIssueType = 'empty-alt' | 'generic-alt' | 'redundant-prefix' | 'filename-as-alt';
|
|
661
|
+
interface MarkdownImageEntry {
|
|
662
|
+
line: number;
|
|
663
|
+
alt: string;
|
|
664
|
+
src: string;
|
|
665
|
+
}
|
|
666
|
+
interface MarkdownImageAltIssue {
|
|
667
|
+
line: number;
|
|
668
|
+
type: MarkdownImageAltIssueType;
|
|
669
|
+
src: string;
|
|
670
|
+
message: string;
|
|
671
|
+
}
|
|
672
|
+
interface MarkdownImageAltTextAuditResult {
|
|
673
|
+
images: MarkdownImageEntry[];
|
|
674
|
+
issues: MarkdownImageAltIssue[];
|
|
675
|
+
imageCount: number;
|
|
676
|
+
}
|
|
677
|
+
/**
|
|
678
|
+
* Scan a Markdown document's inline images (``) and flag alt
|
|
679
|
+
* text accessibility smells: missing/empty alt text, a generic placeholder
|
|
680
|
+
* word used alone ("image", "photo"), alt text that's just the image's own
|
|
681
|
+
* filename, and a redundant "image of"/"photo of" prefix that screen
|
|
682
|
+
* readers already announce. Only inline image syntax is scanned;
|
|
683
|
+
* reference-style images (`![alt][ref]`) and raw HTML `<img>` tags are not
|
|
684
|
+
* detected, and fenced code blocks are skipped.
|
|
685
|
+
*/
|
|
686
|
+
declare function auditMarkdownImageAltText(markdown: string): MarkdownImageAltTextAuditResult | {
|
|
687
|
+
error: string;
|
|
688
|
+
};
|
|
659
689
|
|
|
660
690
|
type data_CaptionSpeedCue = CaptionSpeedCue;
|
|
661
691
|
type data_CaptionSpeedResult = CaptionSpeedResult;
|
|
@@ -687,6 +717,10 @@ type data_HeadingIssueType = HeadingIssueType;
|
|
|
687
717
|
type data_IniSection = IniSection;
|
|
688
718
|
type data_MarkdownAnchorHeading = MarkdownAnchorHeading;
|
|
689
719
|
type data_MarkdownAnchorLink = MarkdownAnchorLink;
|
|
720
|
+
type data_MarkdownImageAltIssue = MarkdownImageAltIssue;
|
|
721
|
+
type data_MarkdownImageAltIssueType = MarkdownImageAltIssueType;
|
|
722
|
+
type data_MarkdownImageAltTextAuditResult = MarkdownImageAltTextAuditResult;
|
|
723
|
+
type data_MarkdownImageEntry = MarkdownImageEntry;
|
|
690
724
|
type data_MarkdownInternalLinkCheckResult = MarkdownInternalLinkCheckResult;
|
|
691
725
|
type data_MarkdownTableAlignResult = MarkdownTableAlignResult;
|
|
692
726
|
type data_MarkdownTableColumnAlignment = MarkdownTableColumnAlignment;
|
|
@@ -717,6 +751,7 @@ type data_YamlDuplicateKeyError = YamlDuplicateKeyError;
|
|
|
717
751
|
type data_YamlDuplicateKeyResult = YamlDuplicateKeyResult;
|
|
718
752
|
declare const data_alignMarkdownTables: typeof alignMarkdownTables;
|
|
719
753
|
declare const data_analyzeCaptionSpeed: typeof analyzeCaptionSpeed;
|
|
754
|
+
declare const data_auditMarkdownImageAltText: typeof auditMarkdownImageAltText;
|
|
720
755
|
declare const data_calculateMarkdownTaskListProgress: typeof calculateMarkdownTaskListProgress;
|
|
721
756
|
declare const data_checkMarkdownInternalLinks: typeof checkMarkdownInternalLinks;
|
|
722
757
|
declare const data_convertSubtitles: typeof convertSubtitles;
|
|
@@ -774,7 +809,7 @@ declare const data_validateXml: typeof validateXml;
|
|
|
774
809
|
declare const data_validateYaml: typeof validateYaml;
|
|
775
810
|
declare const data_xmlToJson: typeof xmlToJson;
|
|
776
811
|
declare namespace data {
|
|
777
|
-
export { type data_CaptionSpeedCue as CaptionSpeedCue, type data_CaptionSpeedResult as CaptionSpeedResult, type data_ConvertedSubtitles as ConvertedSubtitles, type data_CsvColumnMostCommon as CsvColumnMostCommon, type data_CsvColumnStats as CsvColumnStats, type data_CsvColumnStatsOptions as CsvColumnStatsOptions, type data_CsvColumnStatsResult as CsvColumnStatsResult, type data_CsvColumnType as CsvColumnType, type data_CsvColumnTypeInfo as CsvColumnTypeInfo, type data_CsvColumnTypeOptions as CsvColumnTypeOptions, type data_CsvColumnTypeResult as CsvColumnTypeResult, type data_CsvDuplicateGroup as CsvDuplicateGroup, type data_CsvDuplicateOptions as CsvDuplicateOptions, type data_CsvDuplicateResult as CsvDuplicateResult, type data_CsvParseResult as CsvParseResult, type data_CsvToSqlOptions as CsvToSqlOptions, type data_CsvToSqlResult as CsvToSqlResult, type data_EnvDiffError as EnvDiffError, type data_EnvDiffResult as EnvDiffResult, type data_EnvEntry as EnvEntry, type data_EnvParseResult as EnvParseResult, type data_FrontMatterError as FrontMatterError, type data_FrontMatterResult as FrontMatterResult, type data_HeadingEntry as HeadingEntry, type data_HeadingHierarchyResult as HeadingHierarchyResult, type data_HeadingIssue as HeadingIssue, type data_HeadingIssueType as HeadingIssueType, type data_IniSection as IniSection, type data_MarkdownAnchorHeading as MarkdownAnchorHeading, type data_MarkdownAnchorLink as MarkdownAnchorLink, type data_MarkdownInternalLinkCheckResult as MarkdownInternalLinkCheckResult, type data_MarkdownTableAlignResult as MarkdownTableAlignResult, type data_MarkdownTableColumnAlignment as MarkdownTableColumnAlignment, type data_MarkdownTableInfo as MarkdownTableInfo, type data_MarkdownTaskListItem as MarkdownTaskListItem, type data_MarkdownTaskListProgressResult as MarkdownTaskListProgressResult, type data_MarkdownTaskListSectionSummary as MarkdownTaskListSectionSummary, type data_MarkdownTocEntry as MarkdownTocEntry, type data_MarkdownTocOptions as MarkdownTocOptions, type data_MarkdownTocResult as MarkdownTocResult, type data_NdjsonDedupeResult as NdjsonDedupeResult, type data_NdjsonLineResult as NdjsonLineResult, type data_NdjsonValidateResult as NdjsonValidateResult, type data_ParseOptions as ParseOptions, type data_ParsedIni as ParsedIni, type data_ParsedSubtitles as ParsedSubtitles, type data_SubtitleCue as SubtitleCue, type data_SubtitleFormat as SubtitleFormat, type data_TomlFormatResult as TomlFormatResult, type data_ValidationResult as ValidationResult, type data_XmlFormatResult as XmlFormatResult, type data_XmlToJsonOptions as XmlToJsonOptions, type data_YamlAnchorInfo as YamlAnchorInfo, type data_YamlAnchorResolveError as YamlAnchorResolveError, type data_YamlAnchorResolveResult as YamlAnchorResolveResult, type data_YamlDuplicateKeyEntry as YamlDuplicateKeyEntry, type data_YamlDuplicateKeyError as YamlDuplicateKeyError, type data_YamlDuplicateKeyResult as YamlDuplicateKeyResult, data_alignMarkdownTables as alignMarkdownTables, data_analyzeCaptionSpeed as analyzeCaptionSpeed, data_calculateMarkdownTaskListProgress as calculateMarkdownTaskListProgress, data_checkMarkdownInternalLinks as checkMarkdownInternalLinks, data_convertSubtitles as convertSubtitles, data_csvToJson as csvToJson, data_csvToSqlInsert as csvToSqlInsert, data_dedupeNdjson as dedupeNdjson, data_detectDelimiter as detectDelimiter, data_detectSubtitleFormat as detectSubtitleFormat, data_diffEnvExample as diffEnvExample, data_envToExport as envToExport, data_envToJson as envToJson, data_findCsvDuplicateRows as findCsvDuplicateRows, data_findYamlDuplicateKeys as findYamlDuplicateKeys, data_formatNdjson as formatNdjson, data_formatSubtitleTimestamp as formatSubtitleTimestamp, data_formatToml as formatToml, data_formatXml as formatXml, data_generateMarkdownToc as generateMarkdownToc, data_getSection as getSection, data_getSectionNames as getSectionNames, data_getTomlStats as getTomlStats, data_getXmlStats as getXmlStats, data_getYamlStats as getYamlStats, data_inferCsvColumnTypes as inferCsvColumnTypes, data_iniToJson as iniToJson, data_jsonArrayToNdjson as jsonArrayToNdjson, data_jsonToIni as jsonToIni, data_jsonToToml as jsonToToml, data_jsonToXml as jsonToXml, data_minifyNdjson as minifyNdjson, data_minifyToml as minifyToml, data_minifyXml as minifyXml, data_ndjsonToCsv as ndjsonToCsv, data_ndjsonToJsonArray as ndjsonToJsonArray, data_parseCsv as parseCsv, data_parseEnv as parseEnv, data_parseFrontMatter as parseFrontMatter, data_parseIni as parseIni, data_parseSubtitleTimestamp as parseSubtitleTimestamp, data_parseSubtitles as parseSubtitles, data_parseXmlToObject as parseXmlToObject, data_resolveYamlAnchors as resolveYamlAnchors, data_serializeSubtitles as serializeSubtitles, data_shiftSubtitles as shiftSubtitles, data_stringifyIni as stringifyIni, data_summarizeCsvColumnStats as summarizeCsvColumnStats, data_toCsvString as toCsvString, data_tomlToJson as tomlToJson, data_validateEnvKey as validateEnvKey, data_validateIni as validateIni, data_validateMarkdownHeadingHierarchy as validateMarkdownHeadingHierarchy, data_validateNdjson as validateNdjson, data_validateToml as validateToml, data_validateXml as validateXml, data_validateYaml as validateYaml, data_xmlToJson as xmlToJson };
|
|
812
|
+
export { type data_CaptionSpeedCue as CaptionSpeedCue, type data_CaptionSpeedResult as CaptionSpeedResult, type data_ConvertedSubtitles as ConvertedSubtitles, type data_CsvColumnMostCommon as CsvColumnMostCommon, type data_CsvColumnStats as CsvColumnStats, type data_CsvColumnStatsOptions as CsvColumnStatsOptions, type data_CsvColumnStatsResult as CsvColumnStatsResult, type data_CsvColumnType as CsvColumnType, type data_CsvColumnTypeInfo as CsvColumnTypeInfo, type data_CsvColumnTypeOptions as CsvColumnTypeOptions, type data_CsvColumnTypeResult as CsvColumnTypeResult, type data_CsvDuplicateGroup as CsvDuplicateGroup, type data_CsvDuplicateOptions as CsvDuplicateOptions, type data_CsvDuplicateResult as CsvDuplicateResult, type data_CsvParseResult as CsvParseResult, type data_CsvToSqlOptions as CsvToSqlOptions, type data_CsvToSqlResult as CsvToSqlResult, type data_EnvDiffError as EnvDiffError, type data_EnvDiffResult as EnvDiffResult, type data_EnvEntry as EnvEntry, type data_EnvParseResult as EnvParseResult, type data_FrontMatterError as FrontMatterError, type data_FrontMatterResult as FrontMatterResult, type data_HeadingEntry as HeadingEntry, type data_HeadingHierarchyResult as HeadingHierarchyResult, type data_HeadingIssue as HeadingIssue, type data_HeadingIssueType as HeadingIssueType, type data_IniSection as IniSection, type data_MarkdownAnchorHeading as MarkdownAnchorHeading, type data_MarkdownAnchorLink as MarkdownAnchorLink, type data_MarkdownImageAltIssue as MarkdownImageAltIssue, type data_MarkdownImageAltIssueType as MarkdownImageAltIssueType, type data_MarkdownImageAltTextAuditResult as MarkdownImageAltTextAuditResult, type data_MarkdownImageEntry as MarkdownImageEntry, type data_MarkdownInternalLinkCheckResult as MarkdownInternalLinkCheckResult, type data_MarkdownTableAlignResult as MarkdownTableAlignResult, type data_MarkdownTableColumnAlignment as MarkdownTableColumnAlignment, type data_MarkdownTableInfo as MarkdownTableInfo, type data_MarkdownTaskListItem as MarkdownTaskListItem, type data_MarkdownTaskListProgressResult as MarkdownTaskListProgressResult, type data_MarkdownTaskListSectionSummary as MarkdownTaskListSectionSummary, type data_MarkdownTocEntry as MarkdownTocEntry, type data_MarkdownTocOptions as MarkdownTocOptions, type data_MarkdownTocResult as MarkdownTocResult, type data_NdjsonDedupeResult as NdjsonDedupeResult, type data_NdjsonLineResult as NdjsonLineResult, type data_NdjsonValidateResult as NdjsonValidateResult, type data_ParseOptions as ParseOptions, type data_ParsedIni as ParsedIni, type data_ParsedSubtitles as ParsedSubtitles, type data_SubtitleCue as SubtitleCue, type data_SubtitleFormat as SubtitleFormat, type data_TomlFormatResult as TomlFormatResult, type data_ValidationResult as ValidationResult, type data_XmlFormatResult as XmlFormatResult, type data_XmlToJsonOptions as XmlToJsonOptions, type data_YamlAnchorInfo as YamlAnchorInfo, type data_YamlAnchorResolveError as YamlAnchorResolveError, type data_YamlAnchorResolveResult as YamlAnchorResolveResult, type data_YamlDuplicateKeyEntry as YamlDuplicateKeyEntry, type data_YamlDuplicateKeyError as YamlDuplicateKeyError, type data_YamlDuplicateKeyResult as YamlDuplicateKeyResult, data_alignMarkdownTables as alignMarkdownTables, data_analyzeCaptionSpeed as analyzeCaptionSpeed, data_auditMarkdownImageAltText as auditMarkdownImageAltText, data_calculateMarkdownTaskListProgress as calculateMarkdownTaskListProgress, data_checkMarkdownInternalLinks as checkMarkdownInternalLinks, data_convertSubtitles as convertSubtitles, data_csvToJson as csvToJson, data_csvToSqlInsert as csvToSqlInsert, data_dedupeNdjson as dedupeNdjson, data_detectDelimiter as detectDelimiter, data_detectSubtitleFormat as detectSubtitleFormat, data_diffEnvExample as diffEnvExample, data_envToExport as envToExport, data_envToJson as envToJson, data_findCsvDuplicateRows as findCsvDuplicateRows, data_findYamlDuplicateKeys as findYamlDuplicateKeys, data_formatNdjson as formatNdjson, data_formatSubtitleTimestamp as formatSubtitleTimestamp, data_formatToml as formatToml, data_formatXml as formatXml, data_generateMarkdownToc as generateMarkdownToc, data_getSection as getSection, data_getSectionNames as getSectionNames, data_getTomlStats as getTomlStats, data_getXmlStats as getXmlStats, data_getYamlStats as getYamlStats, data_inferCsvColumnTypes as inferCsvColumnTypes, data_iniToJson as iniToJson, data_jsonArrayToNdjson as jsonArrayToNdjson, data_jsonToIni as jsonToIni, data_jsonToToml as jsonToToml, data_jsonToXml as jsonToXml, data_minifyNdjson as minifyNdjson, data_minifyToml as minifyToml, data_minifyXml as minifyXml, data_ndjsonToCsv as ndjsonToCsv, data_ndjsonToJsonArray as ndjsonToJsonArray, data_parseCsv as parseCsv, data_parseEnv as parseEnv, data_parseFrontMatter as parseFrontMatter, data_parseIni as parseIni, data_parseSubtitleTimestamp as parseSubtitleTimestamp, data_parseSubtitles as parseSubtitles, data_parseXmlToObject as parseXmlToObject, data_resolveYamlAnchors as resolveYamlAnchors, data_serializeSubtitles as serializeSubtitles, data_shiftSubtitles as shiftSubtitles, data_stringifyIni as stringifyIni, data_summarizeCsvColumnStats as summarizeCsvColumnStats, data_toCsvString as toCsvString, data_tomlToJson as tomlToJson, data_validateEnvKey as validateEnvKey, data_validateIni as validateIni, data_validateMarkdownHeadingHierarchy as validateMarkdownHeadingHierarchy, data_validateNdjson as validateNdjson, data_validateToml as validateToml, data_validateXml as validateXml, data_validateYaml as validateYaml, data_xmlToJson as xmlToJson };
|
|
778
813
|
}
|
|
779
814
|
|
|
780
|
-
export { type
|
|
815
|
+
export { type TomlFormatResult as $, type MarkdownImageAltIssueType as A, type MarkdownImageAltTextAuditResult as B, type CaptionSpeedCue as C, type MarkdownImageEntry as D, type EnvDiffError as E, type FrontMatterError as F, type MarkdownInternalLinkCheckResult as G, type HeadingEntry as H, type IniSection as I, type MarkdownTableAlignResult as J, type MarkdownTableColumnAlignment as K, type MarkdownTableInfo as L, type MarkdownAnchorHeading as M, type MarkdownTaskListItem as N, type MarkdownTaskListProgressResult as O, type MarkdownTaskListSectionSummary as P, type MarkdownTocEntry as Q, type MarkdownTocOptions as R, type MarkdownTocResult as S, type NdjsonDedupeResult as T, type NdjsonLineResult as U, type NdjsonValidateResult as V, type ParseOptions as W, type ParsedIni as X, type ParsedSubtitles as Y, type SubtitleCue as Z, type SubtitleFormat as _, type CaptionSpeedResult as a, validateNdjson as a$, type ValidationResult as a0, type XmlFormatResult as a1, type XmlToJsonOptions as a2, type YamlAnchorInfo as a3, type YamlAnchorResolveError as a4, type YamlAnchorResolveResult as a5, type YamlDuplicateKeyEntry as a6, type YamlDuplicateKeyError as a7, type YamlDuplicateKeyResult as a8, alignMarkdownTables as a9, iniToJson as aA, jsonArrayToNdjson as aB, jsonToIni as aC, jsonToToml as aD, jsonToXml as aE, minifyNdjson as aF, minifyToml as aG, minifyXml as aH, ndjsonToCsv as aI, ndjsonToJsonArray as aJ, parseCsv as aK, parseEnv as aL, parseFrontMatter as aM, parseIni as aN, parseSubtitleTimestamp as aO, parseSubtitles as aP, parseXmlToObject as aQ, resolveYamlAnchors as aR, serializeSubtitles as aS, shiftSubtitles as aT, stringifyIni as aU, summarizeCsvColumnStats as aV, toCsvString as aW, tomlToJson as aX, validateEnvKey as aY, validateIni as aZ, validateMarkdownHeadingHierarchy as a_, analyzeCaptionSpeed as aa, auditMarkdownImageAltText as ab, calculateMarkdownTaskListProgress as ac, checkMarkdownInternalLinks as ad, convertSubtitles as ae, csvToJson as af, csvToSqlInsert as ag, dedupeNdjson as ah, detectDelimiter as ai, detectSubtitleFormat as aj, diffEnvExample as ak, envToExport as al, envToJson as am, findCsvDuplicateRows as an, findYamlDuplicateKeys as ao, formatNdjson as ap, formatSubtitleTimestamp as aq, formatToml as ar, formatXml as as, generateMarkdownToc as at, getSection as au, getSectionNames as av, getTomlStats as aw, getXmlStats as ax, getYamlStats as ay, inferCsvColumnTypes as az, type ConvertedSubtitles as b, validateToml as b0, validateXml as b1, validateYaml as b2, xmlToJson as b3, type CsvColumnMostCommon as c, data as d, type CsvColumnStats as e, type CsvColumnStatsOptions as f, type CsvColumnStatsResult as g, type CsvColumnType as h, type CsvColumnTypeInfo as i, type CsvColumnTypeOptions as j, type CsvColumnTypeResult as k, type CsvDuplicateGroup as l, type CsvDuplicateOptions as m, type CsvDuplicateResult as n, type CsvParseResult as o, type CsvToSqlOptions as p, type CsvToSqlResult as q, type EnvDiffResult as r, type EnvEntry as s, type EnvParseResult as t, type FrontMatterResult as u, type HeadingHierarchyResult as v, type HeadingIssue as w, type HeadingIssueType as x, type MarkdownAnchorLink as y, type MarkdownImageAltIssue as z };
|