@utilix-tech/sdk 0.90.0 → 0.92.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 -3
- package/dist/{chunk-SW3J5CAI.js → chunk-K3B4JTHN.js} +48 -1
- package/dist/{chunk-AHNBR25A.js → chunk-PEMPPDMM.js} +112 -1
- package/dist/{chunk-X3UAAMXF.js → chunk-XAPHAUPI.js} +54 -1
- package/dist/{data-DuOxffMx.d.ts → data-3qMdFIF5.d.cts} +72 -2
- package/dist/{data-DuOxffMx.d.cts → data-3qMdFIF5.d.ts} +72 -2
- package/dist/index.cjs +211 -0
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/{network-ylRtLPEs.d.cts → network-9j5aKpoR.d.cts} +37 -2
- package/dist/{network-ylRtLPEs.d.ts → network-9j5aKpoR.d.ts} +37 -2
- package/dist/tools/data.cjs +111 -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/network.cjs +47 -0
- package/dist/tools/network.d.cts +1 -1
- package/dist/tools/network.d.ts +1 -1
- package/dist/tools/network.js +1 -1
- package/dist/tools/units.cjs +53 -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-D8_JluTD.d.ts → units-DnWrOTSV.d.cts} +45 -2
- package/dist/{units-D8_JluTD.d.cts → units-DnWrOTSV.d.ts} +45 -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.92.0
|
|
6
|
+
- Add `buildClearSiteData`/`parseClearSiteData` (clear-site-data-header-builder): build a `Clear-Site-Data` response header from directives (cache, cookies, storage, executionContexts, or `*` for all of them), flagging redundant directives alongside the wildcard, or parse an existing header back into its directives.
|
|
7
|
+
- Add `summarizeCsvColumnStats` (csv-column-stats-summarizer): parse CSV/TSV data and compute per-column null/unique counts plus min/max/mean/median/standard deviation for numeric columns, or the most common value for categorical ones.
|
|
8
|
+
|
|
9
|
+
## 0.91.0
|
|
10
|
+
- Add `findYamlDuplicateKeys` (yaml-duplicate-key-detector): report every mapping key that collides with an earlier key in the same YAML mapping scope, with the line and column of each repeated occurrence.
|
|
11
|
+
- Add `detectNegativeAmortization` (negative-amortization-detector): check whether a proposed loan payment covers the interest accruing each period and, if not, project the shortfall and the resulting balance growth, optionally flagging the month a balance cap is crossed.
|
|
12
|
+
|
|
5
13
|
## 0.90.0
|
|
6
14
|
- Add `intersectSemverRanges` (semver-range-intersection): determine whether two semver ranges overlap and, if so, the intersecting range, supporting the same caret/tilde/comparison-operator/exact-version syntax as the semver tool.
|
|
7
15
|
- Add `checkMarkdownInternalLinks` (markdown-internal-link-checker): scan a Markdown document's ATX headings, compute GitHub-style anchor slugs, and flag `[text](#slug)` links that point at a heading that doesn't exist.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @utilix-tech/sdk
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**735 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)
|
|
@@ -226,7 +226,7 @@ checkAcronymExpansion("The API returned an error. The Application Programming In
|
|
|
226
226
|
### `/data`: CSV / YAML / TOML / XML / INI / NDJSON / .env diff / subtitles / Markdown front matter & TOC
|
|
227
227
|
|
|
228
228
|
```ts
|
|
229
|
-
import { parseCsv, csvToJson, validateYaml, resolveYamlAnchors, tomlToJson, jsonToToml,
|
|
229
|
+
import { parseCsv, csvToJson, validateYaml, resolveYamlAnchors, findYamlDuplicateKeys, tomlToJson, jsonToToml,
|
|
230
230
|
formatXml, xmlToJson, jsonToXml, parseIni,
|
|
231
231
|
validateNdjson, formatNdjson, ndjsonToJsonArray, diffEnvExample,
|
|
232
232
|
parseSubtitles, convertSubtitles, shiftSubtitles, analyzeCaptionSpeed, parseFrontMatter,
|
|
@@ -242,6 +242,10 @@ validateYaml("key: value\nlist:\n - a\n - b");
|
|
|
242
242
|
resolveYamlAnchors("defaults: &defaults\n timeout: 30\nprod:\n <<: *defaults\n timeout: 60\n");
|
|
243
243
|
// { resolvedYaml: "defaults:\n timeout: 30\nprod:\n timeout: 60\n", anchors: [...], unusedAnchors: [], aliasCount: 1 }
|
|
244
244
|
|
|
245
|
+
// Find duplicate mapping keys within the same YAML scope
|
|
246
|
+
findYamlDuplicateKeys("name: api\nport: 8080\nname: worker\n");
|
|
247
|
+
// { duplicateCount: 1, duplicates: [{ key: "name", line: 3, column: 1 }] }
|
|
248
|
+
|
|
245
249
|
// TOML
|
|
246
250
|
tomlToJson('[server]\nhost = "localhost"\nport = 8080');
|
|
247
251
|
jsonToToml({ server: { host: "localhost", port: 8080 } });
|
|
@@ -368,7 +372,7 @@ formatIso8601Duration(90061); // { iso: "P1DT1H1M1S", ... }
|
|
|
368
372
|
### `/units`: Conversions
|
|
369
373
|
|
|
370
374
|
```ts
|
|
371
|
-
import { convertBytes, pxToAll, convert, formatValue, validateCardNumber, validateIban, calculateLoan, validateBarcode, calculateTax, calculateCompoundInterest, validateIsbn, calculateTipSplit, calculateSimpleInterest, calculateTimeValue, calculatePercentageChange, convertAprApy, calculateMarginMarkup, calculateDiscount, applySuccessiveDiscounts, calculateBreakEven, calculateVideoBitrate, calculateRuleOf72, calculateEmi, calculateRoi, compareUnitPrices, calculatePaybackPeriod, calculateCdMaturity, calculateDepreciationSchedule, calculateCashRounding, calculateMovingAverages, calculateGpa, calculateCreditUtilization, calculateDebtToIncomeRatio, calculateBlendedLoanRate, calculateFreelancerRate, calculateExtraPaymentPayoff, calculateLoanRefinance, validateVin, validateIsin, calculateLoanPrepaymentPenalty, calculateRealRateOfReturn, calculateCreditCardMinimumPayment, calculateSalesCommission } from "@utilix-tech/sdk/units";
|
|
375
|
+
import { convertBytes, pxToAll, convert, formatValue, validateCardNumber, validateIban, calculateLoan, validateBarcode, calculateTax, calculateCompoundInterest, validateIsbn, calculateTipSplit, calculateSimpleInterest, calculateTimeValue, calculatePercentageChange, convertAprApy, calculateMarginMarkup, calculateDiscount, applySuccessiveDiscounts, calculateBreakEven, calculateVideoBitrate, calculateRuleOf72, calculateEmi, calculateRoi, compareUnitPrices, calculatePaybackPeriod, calculateCdMaturity, calculateDepreciationSchedule, calculateCashRounding, calculateMovingAverages, calculateGpa, calculateCreditUtilization, calculateDebtToIncomeRatio, calculateBlendedLoanRate, calculateFreelancerRate, calculateExtraPaymentPayoff, calculateLoanRefinance, validateVin, validateIsin, calculateLoanPrepaymentPenalty, calculateRealRateOfReturn, calculateCreditCardMinimumPayment, calculateSalesCommission, detectNegativeAmortization } from "@utilix-tech/sdk/units";
|
|
372
376
|
|
|
373
377
|
// File sizes
|
|
374
378
|
convertBytes(1073741824, "GB"); // 1
|
|
@@ -546,6 +550,10 @@ calculateLoanPrepaymentPenalty(10000, "percent-of-balance", { penaltyPercent: 2
|
|
|
546
550
|
// Real rate of return: pass any TWO of nominalRatePercent, inflationRatePercent, realRatePercent
|
|
547
551
|
calculateRealRateOfReturn({ nominalRatePercent: 5, inflationRatePercent: 2 });
|
|
548
552
|
// { nominalRatePercent: 5, inflationRatePercent: 2, realRatePercent: 2.9412, solvedFor: "realRatePercent", ... }
|
|
553
|
+
|
|
554
|
+
// Negative amortization: does this payment cover the interest, and if not, how fast does the balance grow?
|
|
555
|
+
detectNegativeAmortization({ principal: 100000, annualRatePercent: 6, monthlyPayment: 400 });
|
|
556
|
+
// { monthlyInterest: 500, isNegativeAmortizing: true, shortfall: 100, breakEvenPayment: 500, projection: [...], capCrossedMonth: null }
|
|
549
557
|
```
|
|
550
558
|
|
|
551
559
|
---
|
|
@@ -739,6 +747,16 @@ calculateCookieSizeBudget("session=abc123; theme=dark; cart=42");
|
|
|
739
747
|
import { scoreSecurityHeaders } from "@utilix-tech/sdk/network";
|
|
740
748
|
scoreSecurityHeaders("Content-Security-Policy: default-src 'self'\nStrict-Transport-Security: max-age=63072000");
|
|
741
749
|
// { score: 22, grade: "F", passCount: 2, warningCount: 0, missingCount: 7, totalChecks: 9, checks: [...] }
|
|
750
|
+
|
|
751
|
+
// Build a Clear-Site-Data header (cache, cookies, storage, executionContexts, or *), or parse an existing one
|
|
752
|
+
import { buildClearSiteData, parseClearSiteData } from "@utilix-tech/sdk/network";
|
|
753
|
+
buildClearSiteData(["cache", "cookies"]);
|
|
754
|
+
// { header: '"cache", "cookies"', headerName: "Clear-Site-Data", snippet: 'Clear-Site-Data: "cache", "cookies"', directives: ["cache", "cookies"], warnings: [] }
|
|
755
|
+
|
|
756
|
+
// Per-column CSV summary stats: null/unique counts for every column, numeric stats or most-common value
|
|
757
|
+
import { summarizeCsvColumnStats } from "@utilix-tech/sdk/data";
|
|
758
|
+
summarizeCsvColumnStats("name,score\nAlice,90\nBob,80\n");
|
|
759
|
+
// { rowCount: 2, columns: [{ name: "name", isNumeric: false, ... }, { name: "score", isNumeric: true, min: 80, max: 90, mean: 85, median: 85, stdDev: 5, ... }] }
|
|
742
760
|
```
|
|
743
761
|
|
|
744
762
|
---
|
|
@@ -15,6 +15,7 @@ __export(network_exports, {
|
|
|
15
15
|
assessContentTypeRisk: () => assessContentTypeRisk,
|
|
16
16
|
buildAcceptLanguage: () => buildAcceptLanguage,
|
|
17
17
|
buildCacheControl: () => buildCacheControl,
|
|
18
|
+
buildClearSiteData: () => buildClearSiteData,
|
|
18
19
|
buildClientHints: () => buildClientHints,
|
|
19
20
|
buildContentDisposition: () => buildContentDisposition,
|
|
20
21
|
buildDnsQueryUrl: () => buildDnsQueryUrl,
|
|
@@ -55,6 +56,7 @@ __export(network_exports, {
|
|
|
55
56
|
lookupCloseCode: () => lookupCloseCode,
|
|
56
57
|
lookupOpcode: () => lookupOpcode,
|
|
57
58
|
parseAcceptLanguage: () => parseAcceptLanguage,
|
|
59
|
+
parseClearSiteData: () => parseClearSiteData,
|
|
58
60
|
parseClientHintHeaders: () => parseClientHintHeaders,
|
|
59
61
|
parseContentDisposition: () => parseContentDisposition,
|
|
60
62
|
parseContentRangeHeader: () => parseContentRangeHeader,
|
|
@@ -3664,5 +3666,50 @@ function scoreSecurityHeaders(rawHeaders) {
|
|
|
3664
3666
|
const grade = score >= 90 ? "A" : score >= 75 ? "B" : score >= 60 ? "C" : score >= 40 ? "D" : "F";
|
|
3665
3667
|
return { checks, score, grade, passCount, warningCount, missingCount, totalChecks };
|
|
3666
3668
|
}
|
|
3669
|
+
var CLEAR_SITE_DATA_DIRECTIVES = /* @__PURE__ */ new Set(["cache", "cookies", "storage", "executionContexts", "*"]);
|
|
3670
|
+
function buildClearSiteData(directives) {
|
|
3671
|
+
if (!Array.isArray(directives) || directives.length === 0) {
|
|
3672
|
+
return { error: "directives must be a non-empty array" };
|
|
3673
|
+
}
|
|
3674
|
+
const seen = /* @__PURE__ */ new Set();
|
|
3675
|
+
const normalized = [];
|
|
3676
|
+
for (const raw of directives) {
|
|
3677
|
+
if (typeof raw !== "string") return { error: "Each directive must be a string" };
|
|
3678
|
+
if (!CLEAR_SITE_DATA_DIRECTIVES.has(raw)) {
|
|
3679
|
+
return { error: `Unrecognized directive "${raw}". Valid directives: cache, cookies, storage, executionContexts, *` };
|
|
3680
|
+
}
|
|
3681
|
+
if (seen.has(raw)) continue;
|
|
3682
|
+
seen.add(raw);
|
|
3683
|
+
normalized.push(raw);
|
|
3684
|
+
}
|
|
3685
|
+
const warnings = [];
|
|
3686
|
+
if (normalized.includes("*") && normalized.length > 1) {
|
|
3687
|
+
warnings.push('"*" already clears cache, cookies, storage, and executionContexts (plus any future data types the spec adds), so listing other directives alongside it is redundant.');
|
|
3688
|
+
}
|
|
3689
|
+
const header = normalized.map((d) => `"${d}"`).join(", ");
|
|
3690
|
+
return {
|
|
3691
|
+
header,
|
|
3692
|
+
headerName: "Clear-Site-Data",
|
|
3693
|
+
snippet: `Clear-Site-Data: ${header}`,
|
|
3694
|
+
directives: normalized,
|
|
3695
|
+
warnings
|
|
3696
|
+
};
|
|
3697
|
+
}
|
|
3698
|
+
function parseClearSiteData(raw) {
|
|
3699
|
+
if (!raw || raw.trim() === "") return { error: "Input is empty" };
|
|
3700
|
+
const withoutLabel = raw.trim().replace(/^clear-site-data:\s*/i, "");
|
|
3701
|
+
const tokens = withoutLabel.split(",").map((t) => t.trim()).filter((t) => t !== "");
|
|
3702
|
+
if (tokens.length === 0) return { error: "No directives found" };
|
|
3703
|
+
const directives = [];
|
|
3704
|
+
for (const token of tokens) {
|
|
3705
|
+
const match = token.match(/^"(.*)"$/);
|
|
3706
|
+
const value = match ? match[1] : token;
|
|
3707
|
+
if (!CLEAR_SITE_DATA_DIRECTIVES.has(value)) {
|
|
3708
|
+
return { error: `Unrecognized directive "${token}"; each directive should be a quoted string like "cookies"` };
|
|
3709
|
+
}
|
|
3710
|
+
directives.push(value);
|
|
3711
|
+
}
|
|
3712
|
+
return buildClearSiteData(directives);
|
|
3713
|
+
}
|
|
3667
3714
|
|
|
3668
|
-
export { CLIENT_HINTS, DNS_RECORD_TYPES, HTTP_HEADERS, LINK_REL_VALUES, PERMISSIONS_POLICY_FEATURES, REFERRER_POLICY_VALUES, STATUS_CODES, X_CONTENT_TYPE_OPTIONS_HEADER, analyzeEmailHeaders, assessContentTypeRisk, buildAcceptLanguage, buildCacheControl, buildClientHints, buildContentDisposition, buildDnsQueryUrl, buildGeoUrl, buildHsts, buildLinkHeader, buildMapUrl, buildPermissionsPolicy, buildPreferHeader, buildPriorityHeader, buildRangeHeader, buildReferrerPolicy, buildRetryAfterHeader, buildRobotsMetaTag, buildVaryHeader, buildXContentTypeOptionsHeader, buildXRobotsTag, calculateCookieSizeBudget, checkSetCookieHeader, countryCodeToFlag, extractMultipartBoundary, formatCoordinates, formatTtl, generateRobotsTxt, getByCategory, getHeader, getHeadersByCategory, getStatusByCategory, getStatusCode, isClientError, isServerError, isSuccess, isValidIp, isValidIpv4, isValidIpv6, listCloseCodes, listOpcodes, lookupCloseCode, lookupOpcode, network_exports, parseAcceptLanguage, parseClientHintHeaders, parseContentDisposition, parseContentRangeHeader, parseDnsResponse, parseGeoResponse, parseHar, parseHsts, parseIpv6Address, parseMultipartFormData, parsePermissionsPolicy, parsePreferHeader, parsePriorityHeader, parseRetryAfterHeader, parseRobotsMetaTag, parseUserAgent, parseVaryHeader, parseXContentTypeOptionsHeader, parseXRobotsTag, scoreSecurityHeaders, searchHeaders, searchStatusCodes, splitSitemap, statusCodeToText, typeNumberToLabel, validateDomain, validateHeaderName, validateHeaderValue, validateManifest, validateRobotsTxt, validateSitemap };
|
|
3715
|
+
export { CLIENT_HINTS, DNS_RECORD_TYPES, HTTP_HEADERS, LINK_REL_VALUES, PERMISSIONS_POLICY_FEATURES, REFERRER_POLICY_VALUES, STATUS_CODES, X_CONTENT_TYPE_OPTIONS_HEADER, analyzeEmailHeaders, assessContentTypeRisk, buildAcceptLanguage, buildCacheControl, buildClearSiteData, buildClientHints, buildContentDisposition, buildDnsQueryUrl, buildGeoUrl, buildHsts, buildLinkHeader, buildMapUrl, buildPermissionsPolicy, buildPreferHeader, buildPriorityHeader, buildRangeHeader, buildReferrerPolicy, buildRetryAfterHeader, buildRobotsMetaTag, buildVaryHeader, buildXContentTypeOptionsHeader, buildXRobotsTag, calculateCookieSizeBudget, checkSetCookieHeader, countryCodeToFlag, extractMultipartBoundary, formatCoordinates, formatTtl, generateRobotsTxt, getByCategory, getHeader, getHeadersByCategory, getStatusByCategory, getStatusCode, isClientError, isServerError, isSuccess, isValidIp, isValidIpv4, isValidIpv6, listCloseCodes, listOpcodes, lookupCloseCode, lookupOpcode, network_exports, parseAcceptLanguage, parseClearSiteData, parseClientHintHeaders, parseContentDisposition, parseContentRangeHeader, parseDnsResponse, parseGeoResponse, parseHar, parseHsts, parseIpv6Address, parseMultipartFormData, parsePermissionsPolicy, parsePreferHeader, parsePriorityHeader, parseRetryAfterHeader, parseRobotsMetaTag, parseUserAgent, parseVaryHeader, parseXContentTypeOptionsHeader, parseXRobotsTag, scoreSecurityHeaders, searchHeaders, searchStatusCodes, splitSitemap, statusCodeToText, typeNumberToLabel, validateDomain, validateHeaderName, validateHeaderValue, validateManifest, validateRobotsTxt, validateSitemap };
|
|
@@ -19,6 +19,7 @@ __export(data_exports, {
|
|
|
19
19
|
envToExport: () => envToExport,
|
|
20
20
|
envToJson: () => envToJson,
|
|
21
21
|
findCsvDuplicateRows: () => findCsvDuplicateRows,
|
|
22
|
+
findYamlDuplicateKeys: () => findYamlDuplicateKeys,
|
|
22
23
|
formatNdjson: () => formatNdjson,
|
|
23
24
|
formatSubtitleTimestamp: () => formatSubtitleTimestamp,
|
|
24
25
|
formatToml: () => formatToml,
|
|
@@ -51,6 +52,7 @@ __export(data_exports, {
|
|
|
51
52
|
serializeSubtitles: () => serializeSubtitles,
|
|
52
53
|
shiftSubtitles: () => shiftSubtitles,
|
|
53
54
|
stringifyIni: () => stringifyIni,
|
|
55
|
+
summarizeCsvColumnStats: () => summarizeCsvColumnStats,
|
|
54
56
|
toCsvString: () => toCsvString,
|
|
55
57
|
tomlToJson: () => tomlToJson,
|
|
56
58
|
validateEnvKey: () => validateEnvKey,
|
|
@@ -1929,6 +1931,53 @@ function resolveYamlAnchors(yamlText) {
|
|
|
1929
1931
|
const unusedAnchors = seenAnchorNames.filter((name) => !referencedNames.has(name));
|
|
1930
1932
|
return { resolvedYaml, anchors, unusedAnchors, aliasCount };
|
|
1931
1933
|
}
|
|
1934
|
+
function _matchYamlKey(lineText) {
|
|
1935
|
+
const dashMatch = /^(\s*)((?:-\s+)*)/.exec(lineText);
|
|
1936
|
+
const basePrefix = (dashMatch?.[1].length ?? 0) + (dashMatch?.[2].length ?? 0);
|
|
1937
|
+
const rest = lineText.slice(basePrefix);
|
|
1938
|
+
const quoted = /^(["'])((?:\\.|(?!\1).)*)\1(\s*:(?:\s|$))/.exec(rest);
|
|
1939
|
+
if (quoted) {
|
|
1940
|
+
return { key: quoted[2], prefixLength: basePrefix, matchLength: quoted[1].length * 2 + quoted[2].length, quote: quoted[1] };
|
|
1941
|
+
}
|
|
1942
|
+
const plain = /^([^\s:#][^:]*?)(\s*:(?:\s|$))/.exec(rest);
|
|
1943
|
+
if (plain) {
|
|
1944
|
+
return { key: plain[1], prefixLength: basePrefix, matchLength: plain[1].length, quote: null };
|
|
1945
|
+
}
|
|
1946
|
+
return null;
|
|
1947
|
+
}
|
|
1948
|
+
function _maskYamlKey(lineText, match, n) {
|
|
1949
|
+
const suffix = `__dup${n}__`;
|
|
1950
|
+
const before = lineText.slice(0, match.prefixLength);
|
|
1951
|
+
const keyPart = lineText.slice(match.prefixLength, match.prefixLength + match.matchLength);
|
|
1952
|
+
const after = lineText.slice(match.prefixLength + match.matchLength);
|
|
1953
|
+
if (match.quote) {
|
|
1954
|
+
return `${before}${keyPart.slice(0, -1)}${suffix}${match.quote}${after}`;
|
|
1955
|
+
}
|
|
1956
|
+
return `${before}${keyPart}${suffix}${after}`;
|
|
1957
|
+
}
|
|
1958
|
+
var _MAX_YAML_DUPLICATE_PASSES = 500;
|
|
1959
|
+
function findYamlDuplicateKeys(yamlText) {
|
|
1960
|
+
if (!yamlText || !yamlText.trim()) return { error: "Input is empty" };
|
|
1961
|
+
const lines = yamlText.split("\n");
|
|
1962
|
+
const duplicates = [];
|
|
1963
|
+
for (let pass = 0; pass < _MAX_YAML_DUPLICATE_PASSES; pass++) {
|
|
1964
|
+
try {
|
|
1965
|
+
yaml.load(lines.join("\n"));
|
|
1966
|
+
return { duplicateCount: duplicates.length, duplicates };
|
|
1967
|
+
} catch (e) {
|
|
1968
|
+
const err = e;
|
|
1969
|
+
const reason = err.reason ?? err.message;
|
|
1970
|
+
if (!/duplicated mapping key/i.test(reason)) return { error: reason };
|
|
1971
|
+
const lineIdx = err.mark?.line;
|
|
1972
|
+
if (lineIdx == null || lineIdx < 0 || lineIdx >= lines.length) return { error: reason };
|
|
1973
|
+
const match = _matchYamlKey(lines[lineIdx]);
|
|
1974
|
+
if (!match) return { error: reason };
|
|
1975
|
+
duplicates.push({ key: match.key, line: lineIdx + 1, column: match.prefixLength + 1 });
|
|
1976
|
+
lines[lineIdx] = _maskYamlKey(lines[lineIdx], match, duplicates.length);
|
|
1977
|
+
}
|
|
1978
|
+
}
|
|
1979
|
+
return { error: "Too many duplicate keys to fully enumerate" };
|
|
1980
|
+
}
|
|
1932
1981
|
function calculateMarkdownTaskListProgress(markdown) {
|
|
1933
1982
|
if (typeof markdown !== "string") return { error: "markdown must be a string" };
|
|
1934
1983
|
const round2 = (n) => Math.round(n * 100) / 100;
|
|
@@ -2112,5 +2161,67 @@ function alignMarkdownTables(markdown) {
|
|
|
2112
2161
|
if (tables.length === 0) return { error: "No Markdown tables found" };
|
|
2113
2162
|
return { output: outputLines.join("\n"), tables, warnings };
|
|
2114
2163
|
}
|
|
2164
|
+
var _CSV_NUMERIC_RE = /^-?\d+(\.\d+)?([eE][+-]?\d+)?$/;
|
|
2165
|
+
function _parseCsvNumeric(raw) {
|
|
2166
|
+
if (!_CSV_NUMERIC_RE.test(raw)) return null;
|
|
2167
|
+
const n = Number(raw);
|
|
2168
|
+
return Number.isFinite(n) ? n : null;
|
|
2169
|
+
}
|
|
2170
|
+
function summarizeCsvColumnStats(input, options) {
|
|
2171
|
+
const parsed = parseCsv(input, {
|
|
2172
|
+
delimiter: options?.delimiter ?? ",",
|
|
2173
|
+
hasHeader: options?.hasHeader !== false
|
|
2174
|
+
});
|
|
2175
|
+
if ("error" in parsed) return parsed;
|
|
2176
|
+
if (parsed.rows.length === 0) return { error: "No data rows found" };
|
|
2177
|
+
const columns = parsed.headers.map((name, colIdx) => {
|
|
2178
|
+
let nullCount = 0;
|
|
2179
|
+
let nonNumericCount = 0;
|
|
2180
|
+
const numericValues = [];
|
|
2181
|
+
const freq = /* @__PURE__ */ new Map();
|
|
2182
|
+
for (const row of parsed.rows) {
|
|
2183
|
+
const raw = (row[colIdx] ?? "").trim();
|
|
2184
|
+
if (raw === "") {
|
|
2185
|
+
nullCount++;
|
|
2186
|
+
continue;
|
|
2187
|
+
}
|
|
2188
|
+
freq.set(raw, (freq.get(raw) ?? 0) + 1);
|
|
2189
|
+
const n = _parseCsvNumeric(raw);
|
|
2190
|
+
if (n !== null) numericValues.push(n);
|
|
2191
|
+
else nonNumericCount++;
|
|
2192
|
+
}
|
|
2193
|
+
const nonEmptyCount = parsed.rows.length - nullCount;
|
|
2194
|
+
const isNumeric = nonEmptyCount > 0 && nonNumericCount === 0;
|
|
2195
|
+
let mostCommon;
|
|
2196
|
+
for (const [value, count] of freq) {
|
|
2197
|
+
if (!mostCommon || count > mostCommon.count) mostCommon = { value, count };
|
|
2198
|
+
}
|
|
2199
|
+
const stats = {
|
|
2200
|
+
name,
|
|
2201
|
+
totalCount: parsed.rows.length,
|
|
2202
|
+
nullCount,
|
|
2203
|
+
uniqueCount: freq.size,
|
|
2204
|
+
isNumeric,
|
|
2205
|
+
numericCount: numericValues.length
|
|
2206
|
+
};
|
|
2207
|
+
if (isNumeric && numericValues.length > 0) {
|
|
2208
|
+
const sorted = [...numericValues].sort((a, b) => a - b);
|
|
2209
|
+
const sum = sorted.reduce((a, b) => a + b, 0);
|
|
2210
|
+
const mean = sum / sorted.length;
|
|
2211
|
+
const mid = Math.floor(sorted.length / 2);
|
|
2212
|
+
const median = sorted.length % 2 === 0 ? (sorted[mid - 1] + sorted[mid]) / 2 : sorted[mid];
|
|
2213
|
+
const variance = sorted.reduce((acc, v) => acc + (v - mean) ** 2, 0) / sorted.length;
|
|
2214
|
+
stats.min = sorted[0];
|
|
2215
|
+
stats.max = sorted[sorted.length - 1];
|
|
2216
|
+
stats.mean = mean;
|
|
2217
|
+
stats.median = median;
|
|
2218
|
+
stats.stdDev = Math.sqrt(variance);
|
|
2219
|
+
} else {
|
|
2220
|
+
stats.mostCommon = mostCommon;
|
|
2221
|
+
}
|
|
2222
|
+
return stats;
|
|
2223
|
+
});
|
|
2224
|
+
return { columns, rowCount: parsed.rows.length };
|
|
2225
|
+
}
|
|
2115
2226
|
|
|
2116
|
-
export { alignMarkdownTables, analyzeCaptionSpeed, calculateMarkdownTaskListProgress, checkMarkdownInternalLinks, convertSubtitles, csvToJson, csvToSqlInsert, data_exports, dedupeNdjson, detectDelimiter, detectSubtitleFormat, diffEnvExample, envToExport, envToJson, findCsvDuplicateRows, 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, toCsvString, tomlToJson, validateEnvKey, validateIni, validateMarkdownHeadingHierarchy, validateNdjson, validateToml, validateXml, validateYaml, xmlToJson };
|
|
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 };
|
|
@@ -69,6 +69,7 @@ __export(units_exports, {
|
|
|
69
69
|
decimalToIp: () => decimalToIp,
|
|
70
70
|
decimalToIpCidr: () => decimalToIpCidr,
|
|
71
71
|
describePermissions: () => describePermissions,
|
|
72
|
+
detectNegativeAmortization: () => detectNegativeAmortization,
|
|
72
73
|
fitIntoBox: () => fitIntoBox,
|
|
73
74
|
formatNumber: () => formatNumber,
|
|
74
75
|
formatValue: () => formatValue,
|
|
@@ -3113,5 +3114,57 @@ function calculateSalesCommission(input) {
|
|
|
3113
3114
|
breakdown
|
|
3114
3115
|
};
|
|
3115
3116
|
}
|
|
3117
|
+
var NEGATIVE_AMORTIZATION_MAX_PROJECTION_MONTHS = 600;
|
|
3118
|
+
function detectNegativeAmortization(input) {
|
|
3119
|
+
const { principal, annualRatePercent, monthlyPayment } = input;
|
|
3120
|
+
if (!Number.isFinite(principal) || principal <= 0) {
|
|
3121
|
+
return { error: "principal must be a positive number" };
|
|
3122
|
+
}
|
|
3123
|
+
if (!Number.isFinite(annualRatePercent) || annualRatePercent < 0) {
|
|
3124
|
+
return { error: "annualRatePercent must be zero or a positive number" };
|
|
3125
|
+
}
|
|
3126
|
+
if (!Number.isFinite(monthlyPayment) || monthlyPayment < 0) {
|
|
3127
|
+
return { error: "monthlyPayment must be zero or a positive number" };
|
|
3128
|
+
}
|
|
3129
|
+
if (input.projectionMonths !== void 0 && (!Number.isInteger(input.projectionMonths) || input.projectionMonths <= 0)) {
|
|
3130
|
+
return { error: "projectionMonths must be a positive whole number" };
|
|
3131
|
+
}
|
|
3132
|
+
if (input.capPercent !== void 0 && (!Number.isFinite(input.capPercent) || input.capPercent <= 0)) {
|
|
3133
|
+
return { error: "capPercent must be a positive number" };
|
|
3134
|
+
}
|
|
3135
|
+
const monthlyRate = annualRatePercent / 100 / 12;
|
|
3136
|
+
const monthlyInterest = principal * monthlyRate;
|
|
3137
|
+
const shortfall = Math.max(0, round2(monthlyInterest - monthlyPayment));
|
|
3138
|
+
const isNegativeAmortizing = monthlyPayment < monthlyInterest;
|
|
3139
|
+
const projectionMonths = Math.min(input.projectionMonths ?? 12, NEGATIVE_AMORTIZATION_MAX_PROJECTION_MONTHS);
|
|
3140
|
+
const capBalance = input.capPercent != null ? principal * (input.capPercent / 100) : null;
|
|
3141
|
+
const projection = [];
|
|
3142
|
+
let balance = principal;
|
|
3143
|
+
let capCrossedMonth = null;
|
|
3144
|
+
for (let month = 1; month <= projectionMonths; month++) {
|
|
3145
|
+
const interest = balance * monthlyRate;
|
|
3146
|
+
const endingBalance = balance + interest - monthlyPayment;
|
|
3147
|
+
projection.push({
|
|
3148
|
+
month,
|
|
3149
|
+
startingBalance: round2(balance),
|
|
3150
|
+
interest: round2(interest),
|
|
3151
|
+
payment: round2(monthlyPayment),
|
|
3152
|
+
endingBalance: round2(Math.max(endingBalance, 0))
|
|
3153
|
+
});
|
|
3154
|
+
if (capBalance != null && capCrossedMonth == null && endingBalance >= capBalance) {
|
|
3155
|
+
capCrossedMonth = month;
|
|
3156
|
+
}
|
|
3157
|
+
balance = endingBalance;
|
|
3158
|
+
if (balance <= 0) break;
|
|
3159
|
+
}
|
|
3160
|
+
return {
|
|
3161
|
+
monthlyInterest: round2(monthlyInterest),
|
|
3162
|
+
isNegativeAmortizing,
|
|
3163
|
+
shortfall,
|
|
3164
|
+
breakEvenPayment: round2(monthlyInterest),
|
|
3165
|
+
projection,
|
|
3166
|
+
capCrossedMonth
|
|
3167
|
+
};
|
|
3168
|
+
}
|
|
3116
3169
|
|
|
3117
|
-
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, 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 };
|
|
3170
|
+
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, 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 };
|
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
* - markdown-table-aligner: alignMarkdownTables
|
|
24
24
|
* - markdown-heading-hierarchy-validator: validateMarkdownHeadingHierarchy
|
|
25
25
|
* - markdown-internal-link-checker: checkMarkdownInternalLinks
|
|
26
|
+
* - yaml-duplicate-key-detector: findYamlDuplicateKeys
|
|
27
|
+
* - csv-column-stats-summarizer: summarizeCsvColumnStats
|
|
26
28
|
*/
|
|
27
29
|
interface ValidationResult {
|
|
28
30
|
valid: boolean;
|
|
@@ -537,6 +539,28 @@ interface YamlAnchorResolveError {
|
|
|
537
539
|
* syntax remaining.
|
|
538
540
|
*/
|
|
539
541
|
declare function resolveYamlAnchors(yamlText: string): YamlAnchorResolveResult | YamlAnchorResolveError;
|
|
542
|
+
interface YamlDuplicateKeyEntry {
|
|
543
|
+
key: string;
|
|
544
|
+
line: number;
|
|
545
|
+
column: number;
|
|
546
|
+
}
|
|
547
|
+
interface YamlDuplicateKeyResult {
|
|
548
|
+
duplicateCount: number;
|
|
549
|
+
duplicates: YamlDuplicateKeyEntry[];
|
|
550
|
+
}
|
|
551
|
+
interface YamlDuplicateKeyError {
|
|
552
|
+
error: string;
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* Parse a YAML document and report every mapping key that collides with an
|
|
556
|
+
* earlier key in the *same* mapping scope (a sibling object with the same
|
|
557
|
+
* key name is not a duplicate), with the line and column of each repeated
|
|
558
|
+
* occurrence. Standard YAML parsers, including this one by default, treat
|
|
559
|
+
* a duplicate key as "last one wins" rather than an error, so this is the
|
|
560
|
+
* check that catches a merge conflict or a copy-paste mistake before it
|
|
561
|
+
* silently drops a config value.
|
|
562
|
+
*/
|
|
563
|
+
declare function findYamlDuplicateKeys(yamlText: string): YamlDuplicateKeyResult | YamlDuplicateKeyError;
|
|
540
564
|
interface MarkdownTaskListItem {
|
|
541
565
|
text: string;
|
|
542
566
|
checked: boolean;
|
|
@@ -595,10 +619,51 @@ interface MarkdownTableAlignResult {
|
|
|
595
619
|
declare function alignMarkdownTables(markdown: string): MarkdownTableAlignResult | {
|
|
596
620
|
error: string;
|
|
597
621
|
};
|
|
622
|
+
interface CsvColumnStatsOptions {
|
|
623
|
+
delimiter?: string;
|
|
624
|
+
hasHeader?: boolean;
|
|
625
|
+
}
|
|
626
|
+
interface CsvColumnMostCommon {
|
|
627
|
+
value: string;
|
|
628
|
+
count: number;
|
|
629
|
+
}
|
|
630
|
+
interface CsvColumnStats {
|
|
631
|
+
name: string;
|
|
632
|
+
totalCount: number;
|
|
633
|
+
nullCount: number;
|
|
634
|
+
uniqueCount: number;
|
|
635
|
+
isNumeric: boolean;
|
|
636
|
+
numericCount: number;
|
|
637
|
+
min?: number;
|
|
638
|
+
max?: number;
|
|
639
|
+
mean?: number;
|
|
640
|
+
median?: number;
|
|
641
|
+
stdDev?: number;
|
|
642
|
+
mostCommon?: CsvColumnMostCommon;
|
|
643
|
+
}
|
|
644
|
+
interface CsvColumnStatsResult {
|
|
645
|
+
columns: CsvColumnStats[];
|
|
646
|
+
rowCount: number;
|
|
647
|
+
}
|
|
648
|
+
/**
|
|
649
|
+
* Parse CSV/TSV data and compute per-column summary statistics: null and
|
|
650
|
+
* unique-value counts for every column, plus min/max/mean/median/standard
|
|
651
|
+
* deviation for any column where every non-empty value parses as a plain
|
|
652
|
+
* number. A column with even one non-numeric non-empty value is treated as
|
|
653
|
+
* categorical instead, where the most frequent value and its count are
|
|
654
|
+
* reported in place of the numeric stats.
|
|
655
|
+
*/
|
|
656
|
+
declare function summarizeCsvColumnStats(input: string, options?: CsvColumnStatsOptions): CsvColumnStatsResult | {
|
|
657
|
+
error: string;
|
|
658
|
+
};
|
|
598
659
|
|
|
599
660
|
type data_CaptionSpeedCue = CaptionSpeedCue;
|
|
600
661
|
type data_CaptionSpeedResult = CaptionSpeedResult;
|
|
601
662
|
type data_ConvertedSubtitles = ConvertedSubtitles;
|
|
663
|
+
type data_CsvColumnMostCommon = CsvColumnMostCommon;
|
|
664
|
+
type data_CsvColumnStats = CsvColumnStats;
|
|
665
|
+
type data_CsvColumnStatsOptions = CsvColumnStatsOptions;
|
|
666
|
+
type data_CsvColumnStatsResult = CsvColumnStatsResult;
|
|
602
667
|
type data_CsvColumnType = CsvColumnType;
|
|
603
668
|
type data_CsvColumnTypeInfo = CsvColumnTypeInfo;
|
|
604
669
|
type data_CsvColumnTypeOptions = CsvColumnTypeOptions;
|
|
@@ -647,6 +712,9 @@ type data_XmlToJsonOptions = XmlToJsonOptions;
|
|
|
647
712
|
type data_YamlAnchorInfo = YamlAnchorInfo;
|
|
648
713
|
type data_YamlAnchorResolveError = YamlAnchorResolveError;
|
|
649
714
|
type data_YamlAnchorResolveResult = YamlAnchorResolveResult;
|
|
715
|
+
type data_YamlDuplicateKeyEntry = YamlDuplicateKeyEntry;
|
|
716
|
+
type data_YamlDuplicateKeyError = YamlDuplicateKeyError;
|
|
717
|
+
type data_YamlDuplicateKeyResult = YamlDuplicateKeyResult;
|
|
650
718
|
declare const data_alignMarkdownTables: typeof alignMarkdownTables;
|
|
651
719
|
declare const data_analyzeCaptionSpeed: typeof analyzeCaptionSpeed;
|
|
652
720
|
declare const data_calculateMarkdownTaskListProgress: typeof calculateMarkdownTaskListProgress;
|
|
@@ -661,6 +729,7 @@ declare const data_diffEnvExample: typeof diffEnvExample;
|
|
|
661
729
|
declare const data_envToExport: typeof envToExport;
|
|
662
730
|
declare const data_envToJson: typeof envToJson;
|
|
663
731
|
declare const data_findCsvDuplicateRows: typeof findCsvDuplicateRows;
|
|
732
|
+
declare const data_findYamlDuplicateKeys: typeof findYamlDuplicateKeys;
|
|
664
733
|
declare const data_formatNdjson: typeof formatNdjson;
|
|
665
734
|
declare const data_formatSubtitleTimestamp: typeof formatSubtitleTimestamp;
|
|
666
735
|
declare const data_formatToml: typeof formatToml;
|
|
@@ -693,6 +762,7 @@ declare const data_resolveYamlAnchors: typeof resolveYamlAnchors;
|
|
|
693
762
|
declare const data_serializeSubtitles: typeof serializeSubtitles;
|
|
694
763
|
declare const data_shiftSubtitles: typeof shiftSubtitles;
|
|
695
764
|
declare const data_stringifyIni: typeof stringifyIni;
|
|
765
|
+
declare const data_summarizeCsvColumnStats: typeof summarizeCsvColumnStats;
|
|
696
766
|
declare const data_toCsvString: typeof toCsvString;
|
|
697
767
|
declare const data_tomlToJson: typeof tomlToJson;
|
|
698
768
|
declare const data_validateEnvKey: typeof validateEnvKey;
|
|
@@ -704,7 +774,7 @@ declare const data_validateXml: typeof validateXml;
|
|
|
704
774
|
declare const data_validateYaml: typeof validateYaml;
|
|
705
775
|
declare const data_xmlToJson: typeof xmlToJson;
|
|
706
776
|
declare namespace data {
|
|
707
|
-
export { type data_CaptionSpeedCue as CaptionSpeedCue, type data_CaptionSpeedResult as CaptionSpeedResult, type data_ConvertedSubtitles as ConvertedSubtitles, 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, 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_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_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 };
|
|
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 };
|
|
708
778
|
}
|
|
709
779
|
|
|
710
|
-
export {
|
|
780
|
+
export { type YamlAnchorInfo as $, type MarkdownTableAlignResult as A, type MarkdownTableColumnAlignment as B, type CaptionSpeedCue as C, type MarkdownTableInfo as D, type EnvDiffError as E, type FrontMatterError as F, type MarkdownTaskListItem as G, type HeadingEntry as H, type IniSection as I, type MarkdownTaskListProgressResult as J, type MarkdownTaskListSectionSummary as K, type MarkdownTocEntry as L, type MarkdownAnchorHeading as M, type MarkdownTocOptions as N, type MarkdownTocResult as O, type NdjsonDedupeResult as P, type NdjsonLineResult as Q, type NdjsonValidateResult as R, type ParseOptions as S, type ParsedIni as T, type ParsedSubtitles as U, type SubtitleCue as V, type SubtitleFormat as W, type TomlFormatResult as X, type ValidationResult as Y, type XmlFormatResult as Z, type XmlToJsonOptions as _, type CaptionSpeedResult as a, type YamlAnchorResolveError as a0, type YamlAnchorResolveResult as a1, type YamlDuplicateKeyEntry as a2, type YamlDuplicateKeyError as a3, type YamlDuplicateKeyResult as a4, alignMarkdownTables as a5, analyzeCaptionSpeed as a6, calculateMarkdownTaskListProgress as a7, checkMarkdownInternalLinks as a8, convertSubtitles as a9, minifyNdjson as aA, minifyToml as aB, minifyXml as aC, ndjsonToCsv as aD, ndjsonToJsonArray as aE, parseCsv as aF, parseEnv as aG, parseFrontMatter as aH, parseIni as aI, parseSubtitleTimestamp as aJ, parseSubtitles as aK, parseXmlToObject as aL, resolveYamlAnchors as aM, serializeSubtitles as aN, shiftSubtitles as aO, stringifyIni as aP, summarizeCsvColumnStats as aQ, toCsvString as aR, tomlToJson as aS, validateEnvKey as aT, validateIni as aU, validateMarkdownHeadingHierarchy as aV, validateNdjson as aW, validateToml as aX, validateXml as aY, validateYaml as aZ, xmlToJson as a_, csvToJson as aa, csvToSqlInsert as ab, dedupeNdjson as ac, detectDelimiter as ad, detectSubtitleFormat as ae, diffEnvExample as af, envToExport as ag, envToJson as ah, findCsvDuplicateRows as ai, findYamlDuplicateKeys as aj, formatNdjson as ak, formatSubtitleTimestamp as al, formatToml as am, formatXml as an, generateMarkdownToc as ao, getSection as ap, getSectionNames as aq, getTomlStats as ar, getXmlStats as as, getYamlStats as at, inferCsvColumnTypes as au, iniToJson as av, jsonArrayToNdjson as aw, jsonToIni as ax, jsonToToml as ay, jsonToXml as az, type ConvertedSubtitles as b, 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 MarkdownInternalLinkCheckResult as z };
|