@utilix-tech/sdk 0.90.0 → 0.91.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 CHANGED
@@ -2,6 +2,10 @@
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.91.0
6
+ - 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.
7
+ - 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.
8
+
5
9
  ## 0.90.0
6
10
  - 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
11
  - 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
- **730 developer utility functions for Node.js: runs locally, no API key required.**
3
+ **732 developer utility functions for Node.js: runs locally, no API key required.**
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/@utilix-tech/sdk?style=flat-square&color=cb3837)](https://www.npmjs.com/package/@utilix-tech/sdk)
6
6
  [![npm downloads](https://img.shields.io/npm/dm/@utilix-tech/sdk?style=flat-square)](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
  ---
@@ -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,
@@ -1929,6 +1930,53 @@ function resolveYamlAnchors(yamlText) {
1929
1930
  const unusedAnchors = seenAnchorNames.filter((name) => !referencedNames.has(name));
1930
1931
  return { resolvedYaml, anchors, unusedAnchors, aliasCount };
1931
1932
  }
1933
+ function _matchYamlKey(lineText) {
1934
+ const dashMatch = /^(\s*)((?:-\s+)*)/.exec(lineText);
1935
+ const basePrefix = (dashMatch?.[1].length ?? 0) + (dashMatch?.[2].length ?? 0);
1936
+ const rest = lineText.slice(basePrefix);
1937
+ const quoted = /^(["'])((?:\\.|(?!\1).)*)\1(\s*:(?:\s|$))/.exec(rest);
1938
+ if (quoted) {
1939
+ return { key: quoted[2], prefixLength: basePrefix, matchLength: quoted[1].length * 2 + quoted[2].length, quote: quoted[1] };
1940
+ }
1941
+ const plain = /^([^\s:#][^:]*?)(\s*:(?:\s|$))/.exec(rest);
1942
+ if (plain) {
1943
+ return { key: plain[1], prefixLength: basePrefix, matchLength: plain[1].length, quote: null };
1944
+ }
1945
+ return null;
1946
+ }
1947
+ function _maskYamlKey(lineText, match, n) {
1948
+ const suffix = `__dup${n}__`;
1949
+ const before = lineText.slice(0, match.prefixLength);
1950
+ const keyPart = lineText.slice(match.prefixLength, match.prefixLength + match.matchLength);
1951
+ const after = lineText.slice(match.prefixLength + match.matchLength);
1952
+ if (match.quote) {
1953
+ return `${before}${keyPart.slice(0, -1)}${suffix}${match.quote}${after}`;
1954
+ }
1955
+ return `${before}${keyPart}${suffix}${after}`;
1956
+ }
1957
+ var _MAX_YAML_DUPLICATE_PASSES = 500;
1958
+ function findYamlDuplicateKeys(yamlText) {
1959
+ if (!yamlText || !yamlText.trim()) return { error: "Input is empty" };
1960
+ const lines = yamlText.split("\n");
1961
+ const duplicates = [];
1962
+ for (let pass = 0; pass < _MAX_YAML_DUPLICATE_PASSES; pass++) {
1963
+ try {
1964
+ yaml.load(lines.join("\n"));
1965
+ return { duplicateCount: duplicates.length, duplicates };
1966
+ } catch (e) {
1967
+ const err = e;
1968
+ const reason = err.reason ?? err.message;
1969
+ if (!/duplicated mapping key/i.test(reason)) return { error: reason };
1970
+ const lineIdx = err.mark?.line;
1971
+ if (lineIdx == null || lineIdx < 0 || lineIdx >= lines.length) return { error: reason };
1972
+ const match = _matchYamlKey(lines[lineIdx]);
1973
+ if (!match) return { error: reason };
1974
+ duplicates.push({ key: match.key, line: lineIdx + 1, column: match.prefixLength + 1 });
1975
+ lines[lineIdx] = _maskYamlKey(lines[lineIdx], match, duplicates.length);
1976
+ }
1977
+ }
1978
+ return { error: "Too many duplicate keys to fully enumerate" };
1979
+ }
1932
1980
  function calculateMarkdownTaskListProgress(markdown) {
1933
1981
  if (typeof markdown !== "string") return { error: "markdown must be a string" };
1934
1982
  const round2 = (n) => Math.round(n * 100) / 100;
@@ -2113,4 +2161,4 @@ function alignMarkdownTables(markdown) {
2113
2161
  return { output: outputLines.join("\n"), tables, warnings };
2114
2162
  }
2115
2163
 
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 };
2164
+ 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, 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,7 @@
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
26
27
  */
27
28
  interface ValidationResult {
28
29
  valid: boolean;
@@ -537,6 +538,28 @@ interface YamlAnchorResolveError {
537
538
  * syntax remaining.
538
539
  */
539
540
  declare function resolveYamlAnchors(yamlText: string): YamlAnchorResolveResult | YamlAnchorResolveError;
541
+ interface YamlDuplicateKeyEntry {
542
+ key: string;
543
+ line: number;
544
+ column: number;
545
+ }
546
+ interface YamlDuplicateKeyResult {
547
+ duplicateCount: number;
548
+ duplicates: YamlDuplicateKeyEntry[];
549
+ }
550
+ interface YamlDuplicateKeyError {
551
+ error: string;
552
+ }
553
+ /**
554
+ * Parse a YAML document and report every mapping key that collides with an
555
+ * earlier key in the *same* mapping scope (a sibling object with the same
556
+ * key name is not a duplicate), with the line and column of each repeated
557
+ * occurrence. Standard YAML parsers, including this one by default, treat
558
+ * a duplicate key as "last one wins" rather than an error, so this is the
559
+ * check that catches a merge conflict or a copy-paste mistake before it
560
+ * silently drops a config value.
561
+ */
562
+ declare function findYamlDuplicateKeys(yamlText: string): YamlDuplicateKeyResult | YamlDuplicateKeyError;
540
563
  interface MarkdownTaskListItem {
541
564
  text: string;
542
565
  checked: boolean;
@@ -647,6 +670,9 @@ type data_XmlToJsonOptions = XmlToJsonOptions;
647
670
  type data_YamlAnchorInfo = YamlAnchorInfo;
648
671
  type data_YamlAnchorResolveError = YamlAnchorResolveError;
649
672
  type data_YamlAnchorResolveResult = YamlAnchorResolveResult;
673
+ type data_YamlDuplicateKeyEntry = YamlDuplicateKeyEntry;
674
+ type data_YamlDuplicateKeyError = YamlDuplicateKeyError;
675
+ type data_YamlDuplicateKeyResult = YamlDuplicateKeyResult;
650
676
  declare const data_alignMarkdownTables: typeof alignMarkdownTables;
651
677
  declare const data_analyzeCaptionSpeed: typeof analyzeCaptionSpeed;
652
678
  declare const data_calculateMarkdownTaskListProgress: typeof calculateMarkdownTaskListProgress;
@@ -661,6 +687,7 @@ declare const data_diffEnvExample: typeof diffEnvExample;
661
687
  declare const data_envToExport: typeof envToExport;
662
688
  declare const data_envToJson: typeof envToJson;
663
689
  declare const data_findCsvDuplicateRows: typeof findCsvDuplicateRows;
690
+ declare const data_findYamlDuplicateKeys: typeof findYamlDuplicateKeys;
664
691
  declare const data_formatNdjson: typeof formatNdjson;
665
692
  declare const data_formatSubtitleTimestamp: typeof formatSubtitleTimestamp;
666
693
  declare const data_formatToml: typeof formatToml;
@@ -704,7 +731,7 @@ declare const data_validateXml: typeof validateXml;
704
731
  declare const data_validateYaml: typeof validateYaml;
705
732
  declare const data_xmlToJson: typeof xmlToJson;
706
733
  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 };
734
+ 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, 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_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
735
  }
709
736
 
710
- export { analyzeCaptionSpeed as $, type MarkdownTaskListProgressResult as A, type MarkdownTaskListSectionSummary as B, type CaptionSpeedCue as C, type MarkdownTocEntry as D, type EnvDiffError as E, type FrontMatterError as F, type MarkdownTocOptions as G, type HeadingEntry as H, type IniSection as I, type MarkdownTocResult as J, type NdjsonLineResult as K, type NdjsonValidateResult as L, type MarkdownAnchorHeading as M, type NdjsonDedupeResult as N, type ParsedIni as O, type ParseOptions as P, type ParsedSubtitles as Q, type SubtitleFormat as R, type SubtitleCue as S, type TomlFormatResult as T, type XmlToJsonOptions as U, type ValidationResult as V, type YamlAnchorResolveError as W, type XmlFormatResult as X, type YamlAnchorInfo as Y, type YamlAnchorResolveResult as Z, alignMarkdownTables as _, type CaptionSpeedResult as a, calculateMarkdownTaskListProgress as a0, checkMarkdownInternalLinks as a1, convertSubtitles as a2, csvToJson as a3, csvToSqlInsert as a4, dedupeNdjson as a5, detectDelimiter as a6, detectSubtitleFormat as a7, diffEnvExample as a8, envToExport as a9, parseIni as aA, parseSubtitleTimestamp as aB, parseSubtitles as aC, parseXmlToObject as aD, resolveYamlAnchors as aE, serializeSubtitles as aF, shiftSubtitles as aG, stringifyIni as aH, toCsvString as aI, tomlToJson as aJ, validateEnvKey as aK, validateIni as aL, validateMarkdownHeadingHierarchy as aM, validateNdjson as aN, validateToml as aO, validateXml as aP, validateYaml as aQ, xmlToJson as aR, envToJson as aa, findCsvDuplicateRows as ab, formatNdjson as ac, formatSubtitleTimestamp as ad, formatToml as ae, formatXml as af, generateMarkdownToc as ag, getSection as ah, getSectionNames as ai, getTomlStats as aj, getXmlStats as ak, getYamlStats as al, inferCsvColumnTypes as am, iniToJson as an, jsonArrayToNdjson as ao, jsonToIni as ap, jsonToToml as aq, jsonToXml as ar, minifyNdjson as as, minifyToml as at, minifyXml as au, ndjsonToCsv as av, ndjsonToJsonArray as aw, parseCsv as ax, parseEnv as ay, parseFrontMatter as az, type ConvertedSubtitles as b, type CsvColumnType as c, data as d, type CsvColumnTypeInfo as e, type CsvColumnTypeOptions as f, type CsvColumnTypeResult as g, type CsvDuplicateGroup as h, type CsvDuplicateOptions as i, type CsvDuplicateResult as j, type CsvParseResult as k, type CsvToSqlOptions as l, type CsvToSqlResult as m, type EnvDiffResult as n, type EnvEntry as o, type EnvParseResult as p, type FrontMatterResult as q, type HeadingHierarchyResult as r, type HeadingIssue as s, type HeadingIssueType as t, type MarkdownAnchorLink as u, type MarkdownInternalLinkCheckResult as v, type MarkdownTableAlignResult as w, type MarkdownTableColumnAlignment as x, type MarkdownTableInfo as y, type MarkdownTaskListItem as z };
737
+ export { type YamlDuplicateKeyError as $, type MarkdownTaskListProgressResult as A, type MarkdownTaskListSectionSummary as B, type CaptionSpeedCue as C, type MarkdownTocEntry as D, type EnvDiffError as E, type FrontMatterError as F, type MarkdownTocOptions as G, type HeadingEntry as H, type IniSection as I, type MarkdownTocResult as J, type NdjsonLineResult as K, type NdjsonValidateResult as L, type MarkdownAnchorHeading as M, type NdjsonDedupeResult as N, type ParsedIni as O, type ParseOptions as P, type ParsedSubtitles as Q, type SubtitleFormat as R, type SubtitleCue as S, type TomlFormatResult as T, type XmlToJsonOptions as U, type ValidationResult as V, type YamlAnchorResolveError as W, type XmlFormatResult as X, type YamlAnchorInfo as Y, type YamlAnchorResolveResult as Z, type YamlDuplicateKeyEntry as _, type CaptionSpeedResult as a, type YamlDuplicateKeyResult as a0, alignMarkdownTables as a1, analyzeCaptionSpeed as a2, calculateMarkdownTaskListProgress as a3, checkMarkdownInternalLinks as a4, convertSubtitles as a5, csvToJson as a6, csvToSqlInsert as a7, dedupeNdjson as a8, detectDelimiter as a9, ndjsonToJsonArray as aA, parseCsv as aB, parseEnv as aC, parseFrontMatter as aD, parseIni as aE, parseSubtitleTimestamp as aF, parseSubtitles as aG, parseXmlToObject as aH, resolveYamlAnchors as aI, serializeSubtitles as aJ, shiftSubtitles as aK, stringifyIni as aL, toCsvString as aM, tomlToJson as aN, validateEnvKey as aO, validateIni as aP, validateMarkdownHeadingHierarchy as aQ, validateNdjson as aR, validateToml as aS, validateXml as aT, validateYaml as aU, xmlToJson as aV, detectSubtitleFormat as aa, diffEnvExample as ab, envToExport as ac, envToJson as ad, findCsvDuplicateRows as ae, findYamlDuplicateKeys as af, formatNdjson as ag, formatSubtitleTimestamp as ah, formatToml as ai, formatXml as aj, generateMarkdownToc as ak, getSection as al, getSectionNames as am, getTomlStats as an, getXmlStats as ao, getYamlStats as ap, inferCsvColumnTypes as aq, iniToJson as ar, jsonArrayToNdjson as as, jsonToIni as at, jsonToToml as au, jsonToXml as av, minifyNdjson as aw, minifyToml as ax, minifyXml as ay, ndjsonToCsv as az, type ConvertedSubtitles as b, type CsvColumnType as c, data as d, type CsvColumnTypeInfo as e, type CsvColumnTypeOptions as f, type CsvColumnTypeResult as g, type CsvDuplicateGroup as h, type CsvDuplicateOptions as i, type CsvDuplicateResult as j, type CsvParseResult as k, type CsvToSqlOptions as l, type CsvToSqlResult as m, type EnvDiffResult as n, type EnvEntry as o, type EnvParseResult as p, type FrontMatterResult as q, type HeadingHierarchyResult as r, type HeadingIssue as s, type HeadingIssueType as t, type MarkdownAnchorLink as u, type MarkdownInternalLinkCheckResult as v, type MarkdownTableAlignResult as w, type MarkdownTableColumnAlignment as x, type MarkdownTableInfo as y, type MarkdownTaskListItem as z };
@@ -23,6 +23,7 @@
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
26
27
  */
27
28
  interface ValidationResult {
28
29
  valid: boolean;
@@ -537,6 +538,28 @@ interface YamlAnchorResolveError {
537
538
  * syntax remaining.
538
539
  */
539
540
  declare function resolveYamlAnchors(yamlText: string): YamlAnchorResolveResult | YamlAnchorResolveError;
541
+ interface YamlDuplicateKeyEntry {
542
+ key: string;
543
+ line: number;
544
+ column: number;
545
+ }
546
+ interface YamlDuplicateKeyResult {
547
+ duplicateCount: number;
548
+ duplicates: YamlDuplicateKeyEntry[];
549
+ }
550
+ interface YamlDuplicateKeyError {
551
+ error: string;
552
+ }
553
+ /**
554
+ * Parse a YAML document and report every mapping key that collides with an
555
+ * earlier key in the *same* mapping scope (a sibling object with the same
556
+ * key name is not a duplicate), with the line and column of each repeated
557
+ * occurrence. Standard YAML parsers, including this one by default, treat
558
+ * a duplicate key as "last one wins" rather than an error, so this is the
559
+ * check that catches a merge conflict or a copy-paste mistake before it
560
+ * silently drops a config value.
561
+ */
562
+ declare function findYamlDuplicateKeys(yamlText: string): YamlDuplicateKeyResult | YamlDuplicateKeyError;
540
563
  interface MarkdownTaskListItem {
541
564
  text: string;
542
565
  checked: boolean;
@@ -647,6 +670,9 @@ type data_XmlToJsonOptions = XmlToJsonOptions;
647
670
  type data_YamlAnchorInfo = YamlAnchorInfo;
648
671
  type data_YamlAnchorResolveError = YamlAnchorResolveError;
649
672
  type data_YamlAnchorResolveResult = YamlAnchorResolveResult;
673
+ type data_YamlDuplicateKeyEntry = YamlDuplicateKeyEntry;
674
+ type data_YamlDuplicateKeyError = YamlDuplicateKeyError;
675
+ type data_YamlDuplicateKeyResult = YamlDuplicateKeyResult;
650
676
  declare const data_alignMarkdownTables: typeof alignMarkdownTables;
651
677
  declare const data_analyzeCaptionSpeed: typeof analyzeCaptionSpeed;
652
678
  declare const data_calculateMarkdownTaskListProgress: typeof calculateMarkdownTaskListProgress;
@@ -661,6 +687,7 @@ declare const data_diffEnvExample: typeof diffEnvExample;
661
687
  declare const data_envToExport: typeof envToExport;
662
688
  declare const data_envToJson: typeof envToJson;
663
689
  declare const data_findCsvDuplicateRows: typeof findCsvDuplicateRows;
690
+ declare const data_findYamlDuplicateKeys: typeof findYamlDuplicateKeys;
664
691
  declare const data_formatNdjson: typeof formatNdjson;
665
692
  declare const data_formatSubtitleTimestamp: typeof formatSubtitleTimestamp;
666
693
  declare const data_formatToml: typeof formatToml;
@@ -704,7 +731,7 @@ declare const data_validateXml: typeof validateXml;
704
731
  declare const data_validateYaml: typeof validateYaml;
705
732
  declare const data_xmlToJson: typeof xmlToJson;
706
733
  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 };
734
+ 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, 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_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
735
  }
709
736
 
710
- export { analyzeCaptionSpeed as $, type MarkdownTaskListProgressResult as A, type MarkdownTaskListSectionSummary as B, type CaptionSpeedCue as C, type MarkdownTocEntry as D, type EnvDiffError as E, type FrontMatterError as F, type MarkdownTocOptions as G, type HeadingEntry as H, type IniSection as I, type MarkdownTocResult as J, type NdjsonLineResult as K, type NdjsonValidateResult as L, type MarkdownAnchorHeading as M, type NdjsonDedupeResult as N, type ParsedIni as O, type ParseOptions as P, type ParsedSubtitles as Q, type SubtitleFormat as R, type SubtitleCue as S, type TomlFormatResult as T, type XmlToJsonOptions as U, type ValidationResult as V, type YamlAnchorResolveError as W, type XmlFormatResult as X, type YamlAnchorInfo as Y, type YamlAnchorResolveResult as Z, alignMarkdownTables as _, type CaptionSpeedResult as a, calculateMarkdownTaskListProgress as a0, checkMarkdownInternalLinks as a1, convertSubtitles as a2, csvToJson as a3, csvToSqlInsert as a4, dedupeNdjson as a5, detectDelimiter as a6, detectSubtitleFormat as a7, diffEnvExample as a8, envToExport as a9, parseIni as aA, parseSubtitleTimestamp as aB, parseSubtitles as aC, parseXmlToObject as aD, resolveYamlAnchors as aE, serializeSubtitles as aF, shiftSubtitles as aG, stringifyIni as aH, toCsvString as aI, tomlToJson as aJ, validateEnvKey as aK, validateIni as aL, validateMarkdownHeadingHierarchy as aM, validateNdjson as aN, validateToml as aO, validateXml as aP, validateYaml as aQ, xmlToJson as aR, envToJson as aa, findCsvDuplicateRows as ab, formatNdjson as ac, formatSubtitleTimestamp as ad, formatToml as ae, formatXml as af, generateMarkdownToc as ag, getSection as ah, getSectionNames as ai, getTomlStats as aj, getXmlStats as ak, getYamlStats as al, inferCsvColumnTypes as am, iniToJson as an, jsonArrayToNdjson as ao, jsonToIni as ap, jsonToToml as aq, jsonToXml as ar, minifyNdjson as as, minifyToml as at, minifyXml as au, ndjsonToCsv as av, ndjsonToJsonArray as aw, parseCsv as ax, parseEnv as ay, parseFrontMatter as az, type ConvertedSubtitles as b, type CsvColumnType as c, data as d, type CsvColumnTypeInfo as e, type CsvColumnTypeOptions as f, type CsvColumnTypeResult as g, type CsvDuplicateGroup as h, type CsvDuplicateOptions as i, type CsvDuplicateResult as j, type CsvParseResult as k, type CsvToSqlOptions as l, type CsvToSqlResult as m, type EnvDiffResult as n, type EnvEntry as o, type EnvParseResult as p, type FrontMatterResult as q, type HeadingHierarchyResult as r, type HeadingIssue as s, type HeadingIssueType as t, type MarkdownAnchorLink as u, type MarkdownInternalLinkCheckResult as v, type MarkdownTableAlignResult as w, type MarkdownTableColumnAlignment as x, type MarkdownTableInfo as y, type MarkdownTaskListItem as z };
737
+ export { type YamlDuplicateKeyError as $, type MarkdownTaskListProgressResult as A, type MarkdownTaskListSectionSummary as B, type CaptionSpeedCue as C, type MarkdownTocEntry as D, type EnvDiffError as E, type FrontMatterError as F, type MarkdownTocOptions as G, type HeadingEntry as H, type IniSection as I, type MarkdownTocResult as J, type NdjsonLineResult as K, type NdjsonValidateResult as L, type MarkdownAnchorHeading as M, type NdjsonDedupeResult as N, type ParsedIni as O, type ParseOptions as P, type ParsedSubtitles as Q, type SubtitleFormat as R, type SubtitleCue as S, type TomlFormatResult as T, type XmlToJsonOptions as U, type ValidationResult as V, type YamlAnchorResolveError as W, type XmlFormatResult as X, type YamlAnchorInfo as Y, type YamlAnchorResolveResult as Z, type YamlDuplicateKeyEntry as _, type CaptionSpeedResult as a, type YamlDuplicateKeyResult as a0, alignMarkdownTables as a1, analyzeCaptionSpeed as a2, calculateMarkdownTaskListProgress as a3, checkMarkdownInternalLinks as a4, convertSubtitles as a5, csvToJson as a6, csvToSqlInsert as a7, dedupeNdjson as a8, detectDelimiter as a9, ndjsonToJsonArray as aA, parseCsv as aB, parseEnv as aC, parseFrontMatter as aD, parseIni as aE, parseSubtitleTimestamp as aF, parseSubtitles as aG, parseXmlToObject as aH, resolveYamlAnchors as aI, serializeSubtitles as aJ, shiftSubtitles as aK, stringifyIni as aL, toCsvString as aM, tomlToJson as aN, validateEnvKey as aO, validateIni as aP, validateMarkdownHeadingHierarchy as aQ, validateNdjson as aR, validateToml as aS, validateXml as aT, validateYaml as aU, xmlToJson as aV, detectSubtitleFormat as aa, diffEnvExample as ab, envToExport as ac, envToJson as ad, findCsvDuplicateRows as ae, findYamlDuplicateKeys as af, formatNdjson as ag, formatSubtitleTimestamp as ah, formatToml as ai, formatXml as aj, generateMarkdownToc as ak, getSection as al, getSectionNames as am, getTomlStats as an, getXmlStats as ao, getYamlStats as ap, inferCsvColumnTypes as aq, iniToJson as ar, jsonArrayToNdjson as as, jsonToIni as at, jsonToToml as au, jsonToXml as av, minifyNdjson as aw, minifyToml as ax, minifyXml as ay, ndjsonToCsv as az, type ConvertedSubtitles as b, type CsvColumnType as c, data as d, type CsvColumnTypeInfo as e, type CsvColumnTypeOptions as f, type CsvColumnTypeResult as g, type CsvDuplicateGroup as h, type CsvDuplicateOptions as i, type CsvDuplicateResult as j, type CsvParseResult as k, type CsvToSqlOptions as l, type CsvToSqlResult as m, type EnvDiffResult as n, type EnvEntry as o, type EnvParseResult as p, type FrontMatterResult as q, type HeadingHierarchyResult as r, type HeadingIssue as s, type HeadingIssueType as t, type MarkdownAnchorLink as u, type MarkdownInternalLinkCheckResult as v, type MarkdownTableAlignResult as w, type MarkdownTableColumnAlignment as x, type MarkdownTableInfo as y, type MarkdownTaskListItem as z };
package/dist/index.cjs CHANGED
@@ -5649,6 +5649,7 @@ __export(data_exports, {
5649
5649
  envToExport: () => envToExport,
5650
5650
  envToJson: () => envToJson,
5651
5651
  findCsvDuplicateRows: () => findCsvDuplicateRows,
5652
+ findYamlDuplicateKeys: () => findYamlDuplicateKeys,
5652
5653
  formatNdjson: () => formatNdjson,
5653
5654
  formatSubtitleTimestamp: () => formatSubtitleTimestamp,
5654
5655
  formatToml: () => formatToml,
@@ -7559,6 +7560,53 @@ function resolveYamlAnchors(yamlText) {
7559
7560
  const unusedAnchors = seenAnchorNames.filter((name) => !referencedNames.has(name));
7560
7561
  return { resolvedYaml, anchors, unusedAnchors, aliasCount };
7561
7562
  }
7563
+ function _matchYamlKey(lineText) {
7564
+ const dashMatch = /^(\s*)((?:-\s+)*)/.exec(lineText);
7565
+ const basePrefix = (dashMatch?.[1].length ?? 0) + (dashMatch?.[2].length ?? 0);
7566
+ const rest = lineText.slice(basePrefix);
7567
+ const quoted = /^(["'])((?:\\.|(?!\1).)*)\1(\s*:(?:\s|$))/.exec(rest);
7568
+ if (quoted) {
7569
+ return { key: quoted[2], prefixLength: basePrefix, matchLength: quoted[1].length * 2 + quoted[2].length, quote: quoted[1] };
7570
+ }
7571
+ const plain = /^([^\s:#][^:]*?)(\s*:(?:\s|$))/.exec(rest);
7572
+ if (plain) {
7573
+ return { key: plain[1], prefixLength: basePrefix, matchLength: plain[1].length, quote: null };
7574
+ }
7575
+ return null;
7576
+ }
7577
+ function _maskYamlKey(lineText, match, n) {
7578
+ const suffix = `__dup${n}__`;
7579
+ const before = lineText.slice(0, match.prefixLength);
7580
+ const keyPart = lineText.slice(match.prefixLength, match.prefixLength + match.matchLength);
7581
+ const after = lineText.slice(match.prefixLength + match.matchLength);
7582
+ if (match.quote) {
7583
+ return `${before}${keyPart.slice(0, -1)}${suffix}${match.quote}${after}`;
7584
+ }
7585
+ return `${before}${keyPart}${suffix}${after}`;
7586
+ }
7587
+ var _MAX_YAML_DUPLICATE_PASSES = 500;
7588
+ function findYamlDuplicateKeys(yamlText) {
7589
+ if (!yamlText || !yamlText.trim()) return { error: "Input is empty" };
7590
+ const lines = yamlText.split("\n");
7591
+ const duplicates = [];
7592
+ for (let pass = 0; pass < _MAX_YAML_DUPLICATE_PASSES; pass++) {
7593
+ try {
7594
+ yaml2__namespace.load(lines.join("\n"));
7595
+ return { duplicateCount: duplicates.length, duplicates };
7596
+ } catch (e) {
7597
+ const err = e;
7598
+ const reason = err.reason ?? err.message;
7599
+ if (!/duplicated mapping key/i.test(reason)) return { error: reason };
7600
+ const lineIdx = err.mark?.line;
7601
+ if (lineIdx == null || lineIdx < 0 || lineIdx >= lines.length) return { error: reason };
7602
+ const match = _matchYamlKey(lines[lineIdx]);
7603
+ if (!match) return { error: reason };
7604
+ duplicates.push({ key: match.key, line: lineIdx + 1, column: match.prefixLength + 1 });
7605
+ lines[lineIdx] = _maskYamlKey(lines[lineIdx], match, duplicates.length);
7606
+ }
7607
+ }
7608
+ return { error: "Too many duplicate keys to fully enumerate" };
7609
+ }
7562
7610
  function calculateMarkdownTaskListProgress(markdown) {
7563
7611
  if (typeof markdown !== "string") return { error: "markdown must be a string" };
7564
7612
  const round23 = (n) => Math.round(n * 100) / 100;
@@ -9260,6 +9308,7 @@ __export(units_exports, {
9260
9308
  decimalToIp: () => decimalToIp,
9261
9309
  decimalToIpCidr: () => decimalToIpCidr,
9262
9310
  describePermissions: () => describePermissions,
9311
+ detectNegativeAmortization: () => detectNegativeAmortization,
9263
9312
  fitIntoBox: () => fitIntoBox,
9264
9313
  formatNumber: () => formatNumber,
9265
9314
  formatValue: () => formatValue,
@@ -12304,6 +12353,58 @@ function calculateSalesCommission(input) {
12304
12353
  breakdown
12305
12354
  };
12306
12355
  }
12356
+ var NEGATIVE_AMORTIZATION_MAX_PROJECTION_MONTHS = 600;
12357
+ function detectNegativeAmortization(input) {
12358
+ const { principal, annualRatePercent, monthlyPayment } = input;
12359
+ if (!Number.isFinite(principal) || principal <= 0) {
12360
+ return { error: "principal must be a positive number" };
12361
+ }
12362
+ if (!Number.isFinite(annualRatePercent) || annualRatePercent < 0) {
12363
+ return { error: "annualRatePercent must be zero or a positive number" };
12364
+ }
12365
+ if (!Number.isFinite(monthlyPayment) || monthlyPayment < 0) {
12366
+ return { error: "monthlyPayment must be zero or a positive number" };
12367
+ }
12368
+ if (input.projectionMonths !== void 0 && (!Number.isInteger(input.projectionMonths) || input.projectionMonths <= 0)) {
12369
+ return { error: "projectionMonths must be a positive whole number" };
12370
+ }
12371
+ if (input.capPercent !== void 0 && (!Number.isFinite(input.capPercent) || input.capPercent <= 0)) {
12372
+ return { error: "capPercent must be a positive number" };
12373
+ }
12374
+ const monthlyRate = annualRatePercent / 100 / 12;
12375
+ const monthlyInterest = principal * monthlyRate;
12376
+ const shortfall = Math.max(0, round2(monthlyInterest - monthlyPayment));
12377
+ const isNegativeAmortizing = monthlyPayment < monthlyInterest;
12378
+ const projectionMonths = Math.min(input.projectionMonths ?? 12, NEGATIVE_AMORTIZATION_MAX_PROJECTION_MONTHS);
12379
+ const capBalance = input.capPercent != null ? principal * (input.capPercent / 100) : null;
12380
+ const projection = [];
12381
+ let balance = principal;
12382
+ let capCrossedMonth = null;
12383
+ for (let month = 1; month <= projectionMonths; month++) {
12384
+ const interest = balance * monthlyRate;
12385
+ const endingBalance = balance + interest - monthlyPayment;
12386
+ projection.push({
12387
+ month,
12388
+ startingBalance: round2(balance),
12389
+ interest: round2(interest),
12390
+ payment: round2(monthlyPayment),
12391
+ endingBalance: round2(Math.max(endingBalance, 0))
12392
+ });
12393
+ if (capBalance != null && capCrossedMonth == null && endingBalance >= capBalance) {
12394
+ capCrossedMonth = month;
12395
+ }
12396
+ balance = endingBalance;
12397
+ if (balance <= 0) break;
12398
+ }
12399
+ return {
12400
+ monthlyInterest: round2(monthlyInterest),
12401
+ isNegativeAmortizing,
12402
+ shortfall,
12403
+ breakEvenPayment: round2(monthlyInterest),
12404
+ projection,
12405
+ capCrossedMonth
12406
+ };
12407
+ }
12307
12408
 
12308
12409
  // src/tools/network.ts
12309
12410
  var network_exports = {};
package/dist/index.d.cts CHANGED
@@ -2,10 +2,10 @@ export { j as json } from './json-Ca6gZCNB.cjs';
2
2
  export { e as encoding } from './encoding-Dk3wpmb3.cjs';
3
3
  export { h as hashing } from './hashing-CJjlvqS_.cjs';
4
4
  export { t as text } from './text-DOopHoK3.cjs';
5
- export { d as data } from './data-DuOxffMx.cjs';
5
+ export { d as data } from './data-cDudn2P6.cjs';
6
6
  export { g as generators } from './generators-DAXXrMvG.cjs';
7
7
  export { t as time } from './time-VMAy_SrV.cjs';
8
- export { u as units } from './units-D8_JluTD.cjs';
8
+ export { u as units } from './units-DnWrOTSV.cjs';
9
9
  export { n as network } from './network-ylRtLPEs.cjs';
10
10
  export { a as api } from './api-CQnIUrVB.cjs';
11
11
  export { c as code } from './code-DvJYYTea.cjs';
package/dist/index.d.ts CHANGED
@@ -2,10 +2,10 @@ export { j as json } from './json-Ca6gZCNB.js';
2
2
  export { e as encoding } from './encoding-Dk3wpmb3.js';
3
3
  export { h as hashing } from './hashing-CJjlvqS_.js';
4
4
  export { t as text } from './text-DOopHoK3.js';
5
- export { d as data } from './data-DuOxffMx.js';
5
+ export { d as data } from './data-cDudn2P6.js';
6
6
  export { g as generators } from './generators-DAXXrMvG.js';
7
7
  export { t as time } from './time-VMAy_SrV.js';
8
- export { u as units } from './units-D8_JluTD.js';
8
+ export { u as units } from './units-DnWrOTSV.js';
9
9
  export { n as network } from './network-ylRtLPEs.js';
10
10
  export { a as api } from './api-CQnIUrVB.js';
11
11
  export { c as code } from './code-DvJYYTea.js';
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { media_exports as media } from './chunk-ZWFZRDQ4.js';
2
- export { units_exports as units } from './chunk-X3UAAMXF.js';
2
+ export { units_exports as units } from './chunk-XAPHAUPI.js';
3
3
  export { network_exports as network } from './chunk-SW3J5CAI.js';
4
4
  export { api_exports as api } from './chunk-U2HREMZU.js';
5
5
  export { code_exports as code } from './chunk-KYBI62YY.js';
@@ -11,7 +11,7 @@ export { json_exports as json } from './chunk-WUOZHCIC.js';
11
11
  export { encoding_exports as encoding } from './chunk-DOWQZUTP.js';
12
12
  export { hashing_exports as hashing } from './chunk-PET2CGTH.js';
13
13
  export { text_exports as text } from './chunk-YQJ7CEUL.js';
14
- export { data_exports as data } from './chunk-AHNBR25A.js';
14
+ export { data_exports as data } from './chunk-2QNU6KRL.js';
15
15
  export { generators_exports as generators } from './chunk-422ICOZX.js';
16
16
  export { time_exports as time } from './chunk-6EJVNQSY.js';
17
17
  import './chunk-MLKGABMK.js';
@@ -1891,6 +1891,53 @@ function resolveYamlAnchors(yamlText) {
1891
1891
  const unusedAnchors = seenAnchorNames.filter((name) => !referencedNames.has(name));
1892
1892
  return { resolvedYaml, anchors, unusedAnchors, aliasCount };
1893
1893
  }
1894
+ function _matchYamlKey(lineText) {
1895
+ const dashMatch = /^(\s*)((?:-\s+)*)/.exec(lineText);
1896
+ const basePrefix = (dashMatch?.[1].length ?? 0) + (dashMatch?.[2].length ?? 0);
1897
+ const rest = lineText.slice(basePrefix);
1898
+ const quoted = /^(["'])((?:\\.|(?!\1).)*)\1(\s*:(?:\s|$))/.exec(rest);
1899
+ if (quoted) {
1900
+ return { key: quoted[2], prefixLength: basePrefix, matchLength: quoted[1].length * 2 + quoted[2].length, quote: quoted[1] };
1901
+ }
1902
+ const plain = /^([^\s:#][^:]*?)(\s*:(?:\s|$))/.exec(rest);
1903
+ if (plain) {
1904
+ return { key: plain[1], prefixLength: basePrefix, matchLength: plain[1].length, quote: null };
1905
+ }
1906
+ return null;
1907
+ }
1908
+ function _maskYamlKey(lineText, match, n) {
1909
+ const suffix = `__dup${n}__`;
1910
+ const before = lineText.slice(0, match.prefixLength);
1911
+ const keyPart = lineText.slice(match.prefixLength, match.prefixLength + match.matchLength);
1912
+ const after = lineText.slice(match.prefixLength + match.matchLength);
1913
+ if (match.quote) {
1914
+ return `${before}${keyPart.slice(0, -1)}${suffix}${match.quote}${after}`;
1915
+ }
1916
+ return `${before}${keyPart}${suffix}${after}`;
1917
+ }
1918
+ var _MAX_YAML_DUPLICATE_PASSES = 500;
1919
+ function findYamlDuplicateKeys(yamlText) {
1920
+ if (!yamlText || !yamlText.trim()) return { error: "Input is empty" };
1921
+ const lines = yamlText.split("\n");
1922
+ const duplicates = [];
1923
+ for (let pass = 0; pass < _MAX_YAML_DUPLICATE_PASSES; pass++) {
1924
+ try {
1925
+ yaml__namespace.load(lines.join("\n"));
1926
+ return { duplicateCount: duplicates.length, duplicates };
1927
+ } catch (e) {
1928
+ const err = e;
1929
+ const reason = err.reason ?? err.message;
1930
+ if (!/duplicated mapping key/i.test(reason)) return { error: reason };
1931
+ const lineIdx = err.mark?.line;
1932
+ if (lineIdx == null || lineIdx < 0 || lineIdx >= lines.length) return { error: reason };
1933
+ const match = _matchYamlKey(lines[lineIdx]);
1934
+ if (!match) return { error: reason };
1935
+ duplicates.push({ key: match.key, line: lineIdx + 1, column: match.prefixLength + 1 });
1936
+ lines[lineIdx] = _maskYamlKey(lines[lineIdx], match, duplicates.length);
1937
+ }
1938
+ }
1939
+ return { error: "Too many duplicate keys to fully enumerate" };
1940
+ }
1894
1941
  function calculateMarkdownTaskListProgress(markdown) {
1895
1942
  if (typeof markdown !== "string") return { error: "markdown must be a string" };
1896
1943
  const round2 = (n) => Math.round(n * 100) / 100;
@@ -2089,6 +2136,7 @@ exports.diffEnvExample = diffEnvExample;
2089
2136
  exports.envToExport = envToExport;
2090
2137
  exports.envToJson = envToJson;
2091
2138
  exports.findCsvDuplicateRows = findCsvDuplicateRows;
2139
+ exports.findYamlDuplicateKeys = findYamlDuplicateKeys;
2092
2140
  exports.formatNdjson = formatNdjson;
2093
2141
  exports.formatSubtitleTimestamp = formatSubtitleTimestamp;
2094
2142
  exports.formatToml = formatToml;
@@ -1 +1 @@
1
- export { C as CaptionSpeedCue, a as CaptionSpeedResult, b as ConvertedSubtitles, c as CsvColumnType, e as CsvColumnTypeInfo, f as CsvColumnTypeOptions, g as CsvColumnTypeResult, h as CsvDuplicateGroup, i as CsvDuplicateOptions, j as CsvDuplicateResult, k as CsvParseResult, l as CsvToSqlOptions, m as CsvToSqlResult, E as EnvDiffError, n as EnvDiffResult, o as EnvEntry, p as EnvParseResult, F as FrontMatterError, q as FrontMatterResult, H as HeadingEntry, r as HeadingHierarchyResult, s as HeadingIssue, t as HeadingIssueType, I as IniSection, M as MarkdownAnchorHeading, u as MarkdownAnchorLink, v as MarkdownInternalLinkCheckResult, w as MarkdownTableAlignResult, x as MarkdownTableColumnAlignment, y as MarkdownTableInfo, z as MarkdownTaskListItem, A as MarkdownTaskListProgressResult, B as MarkdownTaskListSectionSummary, D as MarkdownTocEntry, G as MarkdownTocOptions, J as MarkdownTocResult, N as NdjsonDedupeResult, K as NdjsonLineResult, L as NdjsonValidateResult, P as ParseOptions, O as ParsedIni, Q as ParsedSubtitles, S as SubtitleCue, R as SubtitleFormat, T as TomlFormatResult, V as ValidationResult, X as XmlFormatResult, U as XmlToJsonOptions, Y as YamlAnchorInfo, W as YamlAnchorResolveError, Z as YamlAnchorResolveResult, _ as alignMarkdownTables, $ as analyzeCaptionSpeed, a0 as calculateMarkdownTaskListProgress, a1 as checkMarkdownInternalLinks, a2 as convertSubtitles, a3 as csvToJson, a4 as csvToSqlInsert, a5 as dedupeNdjson, a6 as detectDelimiter, a7 as detectSubtitleFormat, a8 as diffEnvExample, a9 as envToExport, aa as envToJson, ab as findCsvDuplicateRows, ac as formatNdjson, ad as formatSubtitleTimestamp, ae as formatToml, af as formatXml, ag as generateMarkdownToc, ah as getSection, ai as getSectionNames, aj as getTomlStats, ak as getXmlStats, al as getYamlStats, am as inferCsvColumnTypes, an as iniToJson, ao as jsonArrayToNdjson, ap as jsonToIni, aq as jsonToToml, ar as jsonToXml, as as minifyNdjson, at as minifyToml, au as minifyXml, av as ndjsonToCsv, aw as ndjsonToJsonArray, ax as parseCsv, ay as parseEnv, az as parseFrontMatter, aA as parseIni, aB as parseSubtitleTimestamp, aC as parseSubtitles, aD as parseXmlToObject, aE as resolveYamlAnchors, aF as serializeSubtitles, aG as shiftSubtitles, aH as stringifyIni, aI as toCsvString, aJ as tomlToJson, aK as validateEnvKey, aL as validateIni, aM as validateMarkdownHeadingHierarchy, aN as validateNdjson, aO as validateToml, aP as validateXml, aQ as validateYaml, aR as xmlToJson } from '../data-DuOxffMx.cjs';
1
+ export { C as CaptionSpeedCue, a as CaptionSpeedResult, b as ConvertedSubtitles, c as CsvColumnType, e as CsvColumnTypeInfo, f as CsvColumnTypeOptions, g as CsvColumnTypeResult, h as CsvDuplicateGroup, i as CsvDuplicateOptions, j as CsvDuplicateResult, k as CsvParseResult, l as CsvToSqlOptions, m as CsvToSqlResult, E as EnvDiffError, n as EnvDiffResult, o as EnvEntry, p as EnvParseResult, F as FrontMatterError, q as FrontMatterResult, H as HeadingEntry, r as HeadingHierarchyResult, s as HeadingIssue, t as HeadingIssueType, I as IniSection, M as MarkdownAnchorHeading, u as MarkdownAnchorLink, v as MarkdownInternalLinkCheckResult, w as MarkdownTableAlignResult, x as MarkdownTableColumnAlignment, y as MarkdownTableInfo, z as MarkdownTaskListItem, A as MarkdownTaskListProgressResult, B as MarkdownTaskListSectionSummary, D as MarkdownTocEntry, G as MarkdownTocOptions, J as MarkdownTocResult, N as NdjsonDedupeResult, K as NdjsonLineResult, L as NdjsonValidateResult, P as ParseOptions, O as ParsedIni, Q as ParsedSubtitles, S as SubtitleCue, R as SubtitleFormat, T as TomlFormatResult, V as ValidationResult, X as XmlFormatResult, U as XmlToJsonOptions, Y as YamlAnchorInfo, W as YamlAnchorResolveError, Z as YamlAnchorResolveResult, _ as YamlDuplicateKeyEntry, $ as YamlDuplicateKeyError, a0 as YamlDuplicateKeyResult, a1 as alignMarkdownTables, a2 as analyzeCaptionSpeed, a3 as calculateMarkdownTaskListProgress, a4 as checkMarkdownInternalLinks, a5 as convertSubtitles, a6 as csvToJson, a7 as csvToSqlInsert, a8 as dedupeNdjson, a9 as detectDelimiter, aa as detectSubtitleFormat, ab as diffEnvExample, ac as envToExport, ad as envToJson, ae as findCsvDuplicateRows, af as findYamlDuplicateKeys, ag as formatNdjson, ah as formatSubtitleTimestamp, ai as formatToml, aj as formatXml, ak as generateMarkdownToc, al as getSection, am as getSectionNames, an as getTomlStats, ao as getXmlStats, ap as getYamlStats, aq as inferCsvColumnTypes, ar as iniToJson, as as jsonArrayToNdjson, at as jsonToIni, au as jsonToToml, av as jsonToXml, aw as minifyNdjson, ax as minifyToml, ay as minifyXml, az as ndjsonToCsv, aA as ndjsonToJsonArray, aB as parseCsv, aC as parseEnv, aD as parseFrontMatter, aE as parseIni, aF as parseSubtitleTimestamp, aG as parseSubtitles, aH as parseXmlToObject, aI as resolveYamlAnchors, aJ as serializeSubtitles, aK as shiftSubtitles, aL as stringifyIni, aM as toCsvString, aN as tomlToJson, aO as validateEnvKey, aP as validateIni, aQ as validateMarkdownHeadingHierarchy, aR as validateNdjson, aS as validateToml, aT as validateXml, aU as validateYaml, aV as xmlToJson } from '../data-cDudn2P6.cjs';
@@ -1 +1 @@
1
- export { C as CaptionSpeedCue, a as CaptionSpeedResult, b as ConvertedSubtitles, c as CsvColumnType, e as CsvColumnTypeInfo, f as CsvColumnTypeOptions, g as CsvColumnTypeResult, h as CsvDuplicateGroup, i as CsvDuplicateOptions, j as CsvDuplicateResult, k as CsvParseResult, l as CsvToSqlOptions, m as CsvToSqlResult, E as EnvDiffError, n as EnvDiffResult, o as EnvEntry, p as EnvParseResult, F as FrontMatterError, q as FrontMatterResult, H as HeadingEntry, r as HeadingHierarchyResult, s as HeadingIssue, t as HeadingIssueType, I as IniSection, M as MarkdownAnchorHeading, u as MarkdownAnchorLink, v as MarkdownInternalLinkCheckResult, w as MarkdownTableAlignResult, x as MarkdownTableColumnAlignment, y as MarkdownTableInfo, z as MarkdownTaskListItem, A as MarkdownTaskListProgressResult, B as MarkdownTaskListSectionSummary, D as MarkdownTocEntry, G as MarkdownTocOptions, J as MarkdownTocResult, N as NdjsonDedupeResult, K as NdjsonLineResult, L as NdjsonValidateResult, P as ParseOptions, O as ParsedIni, Q as ParsedSubtitles, S as SubtitleCue, R as SubtitleFormat, T as TomlFormatResult, V as ValidationResult, X as XmlFormatResult, U as XmlToJsonOptions, Y as YamlAnchorInfo, W as YamlAnchorResolveError, Z as YamlAnchorResolveResult, _ as alignMarkdownTables, $ as analyzeCaptionSpeed, a0 as calculateMarkdownTaskListProgress, a1 as checkMarkdownInternalLinks, a2 as convertSubtitles, a3 as csvToJson, a4 as csvToSqlInsert, a5 as dedupeNdjson, a6 as detectDelimiter, a7 as detectSubtitleFormat, a8 as diffEnvExample, a9 as envToExport, aa as envToJson, ab as findCsvDuplicateRows, ac as formatNdjson, ad as formatSubtitleTimestamp, ae as formatToml, af as formatXml, ag as generateMarkdownToc, ah as getSection, ai as getSectionNames, aj as getTomlStats, ak as getXmlStats, al as getYamlStats, am as inferCsvColumnTypes, an as iniToJson, ao as jsonArrayToNdjson, ap as jsonToIni, aq as jsonToToml, ar as jsonToXml, as as minifyNdjson, at as minifyToml, au as minifyXml, av as ndjsonToCsv, aw as ndjsonToJsonArray, ax as parseCsv, ay as parseEnv, az as parseFrontMatter, aA as parseIni, aB as parseSubtitleTimestamp, aC as parseSubtitles, aD as parseXmlToObject, aE as resolveYamlAnchors, aF as serializeSubtitles, aG as shiftSubtitles, aH as stringifyIni, aI as toCsvString, aJ as tomlToJson, aK as validateEnvKey, aL as validateIni, aM as validateMarkdownHeadingHierarchy, aN as validateNdjson, aO as validateToml, aP as validateXml, aQ as validateYaml, aR as xmlToJson } from '../data-DuOxffMx.js';
1
+ export { C as CaptionSpeedCue, a as CaptionSpeedResult, b as ConvertedSubtitles, c as CsvColumnType, e as CsvColumnTypeInfo, f as CsvColumnTypeOptions, g as CsvColumnTypeResult, h as CsvDuplicateGroup, i as CsvDuplicateOptions, j as CsvDuplicateResult, k as CsvParseResult, l as CsvToSqlOptions, m as CsvToSqlResult, E as EnvDiffError, n as EnvDiffResult, o as EnvEntry, p as EnvParseResult, F as FrontMatterError, q as FrontMatterResult, H as HeadingEntry, r as HeadingHierarchyResult, s as HeadingIssue, t as HeadingIssueType, I as IniSection, M as MarkdownAnchorHeading, u as MarkdownAnchorLink, v as MarkdownInternalLinkCheckResult, w as MarkdownTableAlignResult, x as MarkdownTableColumnAlignment, y as MarkdownTableInfo, z as MarkdownTaskListItem, A as MarkdownTaskListProgressResult, B as MarkdownTaskListSectionSummary, D as MarkdownTocEntry, G as MarkdownTocOptions, J as MarkdownTocResult, N as NdjsonDedupeResult, K as NdjsonLineResult, L as NdjsonValidateResult, P as ParseOptions, O as ParsedIni, Q as ParsedSubtitles, S as SubtitleCue, R as SubtitleFormat, T as TomlFormatResult, V as ValidationResult, X as XmlFormatResult, U as XmlToJsonOptions, Y as YamlAnchorInfo, W as YamlAnchorResolveError, Z as YamlAnchorResolveResult, _ as YamlDuplicateKeyEntry, $ as YamlDuplicateKeyError, a0 as YamlDuplicateKeyResult, a1 as alignMarkdownTables, a2 as analyzeCaptionSpeed, a3 as calculateMarkdownTaskListProgress, a4 as checkMarkdownInternalLinks, a5 as convertSubtitles, a6 as csvToJson, a7 as csvToSqlInsert, a8 as dedupeNdjson, a9 as detectDelimiter, aa as detectSubtitleFormat, ab as diffEnvExample, ac as envToExport, ad as envToJson, ae as findCsvDuplicateRows, af as findYamlDuplicateKeys, ag as formatNdjson, ah as formatSubtitleTimestamp, ai as formatToml, aj as formatXml, ak as generateMarkdownToc, al as getSection, am as getSectionNames, an as getTomlStats, ao as getXmlStats, ap as getYamlStats, aq as inferCsvColumnTypes, ar as iniToJson, as as jsonArrayToNdjson, at as jsonToIni, au as jsonToToml, av as jsonToXml, aw as minifyNdjson, ax as minifyToml, ay as minifyXml, az as ndjsonToCsv, aA as ndjsonToJsonArray, aB as parseCsv, aC as parseEnv, aD as parseFrontMatter, aE as parseIni, aF as parseSubtitleTimestamp, aG as parseSubtitles, aH as parseXmlToObject, aI as resolveYamlAnchors, aJ as serializeSubtitles, aK as shiftSubtitles, aL as stringifyIni, aM as toCsvString, aN as tomlToJson, aO as validateEnvKey, aP as validateIni, aQ as validateMarkdownHeadingHierarchy, aR as validateNdjson, aS as validateToml, aT as validateXml, aU as validateYaml, aV as xmlToJson } from '../data-cDudn2P6.js';
@@ -1,2 +1,2 @@
1
- export { alignMarkdownTables, analyzeCaptionSpeed, calculateMarkdownTaskListProgress, checkMarkdownInternalLinks, convertSubtitles, csvToJson, csvToSqlInsert, 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 } from '../chunk-AHNBR25A.js';
1
+ export { alignMarkdownTables, analyzeCaptionSpeed, calculateMarkdownTaskListProgress, checkMarkdownInternalLinks, convertSubtitles, csvToJson, csvToSqlInsert, 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, toCsvString, tomlToJson, validateEnvKey, validateIni, validateMarkdownHeadingHierarchy, validateNdjson, validateToml, validateXml, validateYaml, xmlToJson } from '../chunk-2QNU6KRL.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -2997,6 +2997,58 @@ function calculateSalesCommission(input) {
2997
2997
  breakdown
2998
2998
  };
2999
2999
  }
3000
+ var NEGATIVE_AMORTIZATION_MAX_PROJECTION_MONTHS = 600;
3001
+ function detectNegativeAmortization(input) {
3002
+ const { principal, annualRatePercent, monthlyPayment } = input;
3003
+ if (!Number.isFinite(principal) || principal <= 0) {
3004
+ return { error: "principal must be a positive number" };
3005
+ }
3006
+ if (!Number.isFinite(annualRatePercent) || annualRatePercent < 0) {
3007
+ return { error: "annualRatePercent must be zero or a positive number" };
3008
+ }
3009
+ if (!Number.isFinite(monthlyPayment) || monthlyPayment < 0) {
3010
+ return { error: "monthlyPayment must be zero or a positive number" };
3011
+ }
3012
+ if (input.projectionMonths !== void 0 && (!Number.isInteger(input.projectionMonths) || input.projectionMonths <= 0)) {
3013
+ return { error: "projectionMonths must be a positive whole number" };
3014
+ }
3015
+ if (input.capPercent !== void 0 && (!Number.isFinite(input.capPercent) || input.capPercent <= 0)) {
3016
+ return { error: "capPercent must be a positive number" };
3017
+ }
3018
+ const monthlyRate = annualRatePercent / 100 / 12;
3019
+ const monthlyInterest = principal * monthlyRate;
3020
+ const shortfall = Math.max(0, round2(monthlyInterest - monthlyPayment));
3021
+ const isNegativeAmortizing = monthlyPayment < monthlyInterest;
3022
+ const projectionMonths = Math.min(input.projectionMonths ?? 12, NEGATIVE_AMORTIZATION_MAX_PROJECTION_MONTHS);
3023
+ const capBalance = input.capPercent != null ? principal * (input.capPercent / 100) : null;
3024
+ const projection = [];
3025
+ let balance = principal;
3026
+ let capCrossedMonth = null;
3027
+ for (let month = 1; month <= projectionMonths; month++) {
3028
+ const interest = balance * monthlyRate;
3029
+ const endingBalance = balance + interest - monthlyPayment;
3030
+ projection.push({
3031
+ month,
3032
+ startingBalance: round2(balance),
3033
+ interest: round2(interest),
3034
+ payment: round2(monthlyPayment),
3035
+ endingBalance: round2(Math.max(endingBalance, 0))
3036
+ });
3037
+ if (capBalance != null && capCrossedMonth == null && endingBalance >= capBalance) {
3038
+ capCrossedMonth = month;
3039
+ }
3040
+ balance = endingBalance;
3041
+ if (balance <= 0) break;
3042
+ }
3043
+ return {
3044
+ monthlyInterest: round2(monthlyInterest),
3045
+ isNegativeAmortizing,
3046
+ shortfall,
3047
+ breakEvenPayment: round2(monthlyInterest),
3048
+ projection,
3049
+ capCrossedMonth
3050
+ };
3051
+ }
3000
3052
 
3001
3053
  exports.BASE_LABELS = BASE_LABELS;
3002
3054
  exports.BASE_PREFIXES = BASE_PREFIXES;
@@ -3064,6 +3116,7 @@ exports.coverBox = coverBox;
3064
3116
  exports.decimalToIp = decimalToIp;
3065
3117
  exports.decimalToIpCidr = decimalToIpCidr;
3066
3118
  exports.describePermissions = describePermissions;
3119
+ exports.detectNegativeAmortization = detectNegativeAmortization;
3067
3120
  exports.fitIntoBox = fitIntoBox;
3068
3121
  exports.formatNumber = formatNumber;
3069
3122
  exports.formatValue = formatValue;
@@ -1 +1 @@
1
- export { A as AmortizationRow, a as AnnuityPayoutInput, b as AnnuityPayoutMode, c as AnnuityPayoutResult, d as AnnuityStructure, e as AprApyDirection, f as AprApyResult, g as AspectRatioResult, B as BASE_LABELS, h as BASE_PREFIXES, i as BYTE_UNITS, j as BarcodeFormat, k as BarcodeValidationResult, l as BaseConvertResult, m as BlendedLoanRateResult, n as BreakEvenInput, o as BreakEvenResult, p as ByteConvertResult, q as ByteUnit, C as COMMON_CURRENCIES, r as COMMON_LOCALES, s as COMMON_PERMISSIONS, t as COMMON_RATIOS, v as COMMON_SIZES, w as COMMON_TAX_RATES, x as COMMON_TIP_PERCENTAGES, y as COMMON_VIEWPORTS, z as CardValidationResult, D as CashBreakdownResult, E as CashChangeResult, F as CashDenominationItem, G as CashRoundingMode, H as CashRoundingResult, I as CdMaturityResult, J as CommissionBreakdownEntry, K as CommissionInput, L as CommissionResult, M as CommissionTier, N as CompareUnitPricesResult, O as CompoundInterestResult, P as CompoundYearRow, Q as CreditAccountInput, R as CreditAccountResult, S as CreditCardMinimumPaymentResult, T as CreditUtilizationResult, U as DebtItemInput, V as DebtItemResult, W as DebtPayoffComparison, X as DebtPayoffInput, Y as DebtPayoffPlanResult, Z as DebtPayoffScheduleEntry, _ as DebtPayoffStrategy, $ as DebtPayoffStrategyResult, a0 as DebtToIncomeRatioResult, a1 as DepreciationMethod, a2 as DepreciationResult, a3 as DepreciationYear, a4 as Dimensions, a5 as DiscountField, a6 as DiscountInput, a7 as DiscountResult, a8 as DtiTier, a9 as EmiResult, aa as EmiTenureUnit, ab as EmiYearlyBreakdownRow, ac as ExtraPaymentPayoffResult, ad as FilePermissions, ae as FileSizeUnit, af as FormatOptions, ag as FreelancerRateInput, ah as FreelancerRateResult, ai as GPA_GRADE_POINTS, aj as GpaCourse, ak as GpaCourseResult, al as GpaResult, am as IbanValidationResult, an as IpConversion, ao as IsbnFormat, ap as IsbnResult, aq as IsinValidationResult, ar as LoanBalanceInput, as as LoanBalanceResult, at as LoanPrepaymentPenaltyResult, au as LoanRefinanceResult, av as LoanResult, aw as MarginMarkupField, ax as MarginMarkupInput, ay as MarginMarkupResult, az as MortgagePointsResult, aA as MovingAveragePoint, aB as MovingAverageResult, aC as NotationStyle, aD as NumberBase, aE as PaybackPeriodInput, aF as PaybackPeriodResult, aG as PercentChangeDirection, aH as PercentageChangeResult, aI as Permission, aJ as PrepaymentPenaltyType, aK as PxConvertResult, aL as RangeIntersectionResult, aM as RealRateField, aN as RealRateOfReturnInput, aO as RealRateOfReturnResult, aP as RequiredBandwidthResult, aQ as RoiInput, aR as RoiResult, aS as RuleOf72Direction, aT as RuleOf72Result, aU as SavingsGoalInput, aV as SavingsGoalMode, aW as SavingsGoalResult, aX as SemverVersion, aY as SimpleInterestResult, aZ as SubnetInfo, a_ as SuccessiveDiscountResult, a$ as SuccessiveDiscountStep, b0 as TaxDirection, b1 as TaxEquivalentYieldDirection, b2 as TaxEquivalentYieldResult, b3 as TaxResult, b4 as TimeValueDirection, b5 as TimeValueResult, b6 as TipSplitResult, b7 as TransferSpeedUnit, b8 as TransferTimeResult, b9 as USD_DENOMINATIONS, ba as UnitPriceItem, bb as UnitPriceResult, bc as UtilizationTier, bd as VideoBitrateInput, be as VideoBitrateMode, bf as VideoBitrateResult, bg as ViewportConvertResult, bh as VinValidationResult, bi as applySuccessiveDiscounts, bj as autoFormat, bk as bumpVersion, bl as calcAspectRatio, bm as calcSubnet, bn as calculateAnnuityPayout, bo as calculateBlendedLoanRate, bp as calculateBreakEven, bq as calculateCashBreakdown, br as calculateCashRounding, bs as calculateCdMaturity, bt as calculateChange, bu as calculateCompoundInterest, bv as calculateCreditCardMinimumPayment, bw as calculateCreditUtilization, bx as calculateDebtToIncomeRatio, by as calculateDepreciationSchedule, bz as calculateDiscount, bA as calculateEmi, bB as calculateExtraPaymentPayoff, bC as calculateFreelancerRate, bD as calculateGpa, bE as calculateLoan, bF as calculateLoanPrepaymentPenalty, bG as calculateLoanRefinance, bH as calculateMarginMarkup, bI as calculateMortgagePoints, bJ as calculateMovingAverages, bK as calculatePaybackPeriod, bL as calculatePercentageChange, bM as calculateRealRateOfReturn, bN as calculateRequiredBandwidth, bO as calculateRoi, bP as calculateRuleOf72, bQ as calculateSalesCommission, bR as calculateSavingsGoal, bS as calculateSimpleInterest, bT as calculateTax, bU as calculateTaxEquivalentYield, bV as calculateTimeValue, bW as calculateTipSplit, bX as calculateTransferTime, bY as calculateVideoBitrate, bZ as compareSemver, b_ as compareUnitPrices, b$ as convert, c0 as convertAprApy, c1 as convertBytes, c2 as convertIp, c3 as coverBox, c4 as decimalToIp, c5 as decimalToIpCidr, c6 as describePermissions, c7 as fitIntoBox, c8 as formatNumber, c9 as formatValue, ca as formatVwValue, cb as formatWithSeparator, cc as gcd, cd as intersectSemverRanges, ce as ipFromBinary, cf as ipFromDecimal, cg as ipFromHex, ch as ipToBinary, ci as ipToDecimal, cj as ipToDecimalCidr, ck as ipToHex, cl as ipToOctal, cm as isValid, cn as isValidCidr, co as isValidIp, cp as isValidIpv4, cq as marginToMarkup, cr as markupToMargin, cs as octalToPermissions, ct as parseFileSize, cu as parseInput, cv as parseNumberString, cw as parseSemver, cx as permissionsToChmod, cy as permissionsToOctal, cz as permissionsToSymbolic, cA as planDebtPayoff, cB as ptToPx, cC as pxToAll, cD as pxToViewport, cE as remToPx, cF as satisfiesRange, cG as scaleByHeight, cH as scaleByWidth, cI as sortVersions, cJ as splitSubnet, cK as symbolicToPermissions, cL as validateBarcode, cM as validateCardNumber, cN as validateIban, cO as validateIsbn, cP as validateIsin, cQ as validateVin, cR as viewportToPx } from '../units-D8_JluTD.cjs';
1
+ export { A as AmortizationRow, a as AnnuityPayoutInput, b as AnnuityPayoutMode, c as AnnuityPayoutResult, d as AnnuityStructure, e as AprApyDirection, f as AprApyResult, g as AspectRatioResult, B as BASE_LABELS, h as BASE_PREFIXES, i as BYTE_UNITS, j as BarcodeFormat, k as BarcodeValidationResult, l as BaseConvertResult, m as BlendedLoanRateResult, n as BreakEvenInput, o as BreakEvenResult, p as ByteConvertResult, q as ByteUnit, C as COMMON_CURRENCIES, r as COMMON_LOCALES, s as COMMON_PERMISSIONS, t as COMMON_RATIOS, v as COMMON_SIZES, w as COMMON_TAX_RATES, x as COMMON_TIP_PERCENTAGES, y as COMMON_VIEWPORTS, z as CardValidationResult, D as CashBreakdownResult, E as CashChangeResult, F as CashDenominationItem, G as CashRoundingMode, H as CashRoundingResult, I as CdMaturityResult, J as CommissionBreakdownEntry, K as CommissionInput, L as CommissionResult, M as CommissionTier, N as CompareUnitPricesResult, O as CompoundInterestResult, P as CompoundYearRow, Q as CreditAccountInput, R as CreditAccountResult, S as CreditCardMinimumPaymentResult, T as CreditUtilizationResult, U as DebtItemInput, V as DebtItemResult, W as DebtPayoffComparison, X as DebtPayoffInput, Y as DebtPayoffPlanResult, Z as DebtPayoffScheduleEntry, _ as DebtPayoffStrategy, $ as DebtPayoffStrategyResult, a0 as DebtToIncomeRatioResult, a1 as DepreciationMethod, a2 as DepreciationResult, a3 as DepreciationYear, a4 as Dimensions, a5 as DiscountField, a6 as DiscountInput, a7 as DiscountResult, a8 as DtiTier, a9 as EmiResult, aa as EmiTenureUnit, ab as EmiYearlyBreakdownRow, ac as ExtraPaymentPayoffResult, ad as FilePermissions, ae as FileSizeUnit, af as FormatOptions, ag as FreelancerRateInput, ah as FreelancerRateResult, ai as GPA_GRADE_POINTS, aj as GpaCourse, ak as GpaCourseResult, al as GpaResult, am as IbanValidationResult, an as IpConversion, ao as IsbnFormat, ap as IsbnResult, aq as IsinValidationResult, ar as LoanBalanceInput, as as LoanBalanceResult, at as LoanPrepaymentPenaltyResult, au as LoanRefinanceResult, av as LoanResult, aw as MarginMarkupField, ax as MarginMarkupInput, ay as MarginMarkupResult, az as MortgagePointsResult, aA as MovingAveragePoint, aB as MovingAverageResult, aC as NegativeAmortizationInput, aD as NegativeAmortizationMonth, aE as NegativeAmortizationResult, aF as NotationStyle, aG as NumberBase, aH as PaybackPeriodInput, aI as PaybackPeriodResult, aJ as PercentChangeDirection, aK as PercentageChangeResult, aL as Permission, aM as PrepaymentPenaltyType, aN as PxConvertResult, aO as RangeIntersectionResult, aP as RealRateField, aQ as RealRateOfReturnInput, aR as RealRateOfReturnResult, aS as RequiredBandwidthResult, aT as RoiInput, aU as RoiResult, aV as RuleOf72Direction, aW as RuleOf72Result, aX as SavingsGoalInput, aY as SavingsGoalMode, aZ as SavingsGoalResult, a_ as SemverVersion, a$ as SimpleInterestResult, b0 as SubnetInfo, b1 as SuccessiveDiscountResult, b2 as SuccessiveDiscountStep, b3 as TaxDirection, b4 as TaxEquivalentYieldDirection, b5 as TaxEquivalentYieldResult, b6 as TaxResult, b7 as TimeValueDirection, b8 as TimeValueResult, b9 as TipSplitResult, ba as TransferSpeedUnit, bb as TransferTimeResult, bc as USD_DENOMINATIONS, bd as UnitPriceItem, be as UnitPriceResult, bf as UtilizationTier, bg as VideoBitrateInput, bh as VideoBitrateMode, bi as VideoBitrateResult, bj as ViewportConvertResult, bk as VinValidationResult, bl as applySuccessiveDiscounts, bm as autoFormat, bn as bumpVersion, bo as calcAspectRatio, bp as calcSubnet, bq as calculateAnnuityPayout, br as calculateBlendedLoanRate, bs as calculateBreakEven, bt as calculateCashBreakdown, bu as calculateCashRounding, bv as calculateCdMaturity, bw as calculateChange, bx as calculateCompoundInterest, by as calculateCreditCardMinimumPayment, bz as calculateCreditUtilization, bA as calculateDebtToIncomeRatio, bB as calculateDepreciationSchedule, bC as calculateDiscount, bD as calculateEmi, bE as calculateExtraPaymentPayoff, bF as calculateFreelancerRate, bG as calculateGpa, bH as calculateLoan, bI as calculateLoanPrepaymentPenalty, bJ as calculateLoanRefinance, bK as calculateMarginMarkup, bL as calculateMortgagePoints, bM as calculateMovingAverages, bN as calculatePaybackPeriod, bO as calculatePercentageChange, bP as calculateRealRateOfReturn, bQ as calculateRequiredBandwidth, bR as calculateRoi, bS as calculateRuleOf72, bT as calculateSalesCommission, bU as calculateSavingsGoal, bV as calculateSimpleInterest, bW as calculateTax, bX as calculateTaxEquivalentYield, bY as calculateTimeValue, bZ as calculateTipSplit, b_ as calculateTransferTime, b$ as calculateVideoBitrate, c0 as compareSemver, c1 as compareUnitPrices, c2 as convert, c3 as convertAprApy, c4 as convertBytes, c5 as convertIp, c6 as coverBox, c7 as decimalToIp, c8 as decimalToIpCidr, c9 as describePermissions, ca as detectNegativeAmortization, cb as fitIntoBox, cc as formatNumber, cd as formatValue, ce as formatVwValue, cf as formatWithSeparator, cg as gcd, ch as intersectSemverRanges, ci as ipFromBinary, cj as ipFromDecimal, ck as ipFromHex, cl as ipToBinary, cm as ipToDecimal, cn as ipToDecimalCidr, co as ipToHex, cp as ipToOctal, cq as isValid, cr as isValidCidr, cs as isValidIp, ct as isValidIpv4, cu as marginToMarkup, cv as markupToMargin, cw as octalToPermissions, cx as parseFileSize, cy as parseInput, cz as parseNumberString, cA as parseSemver, cB as permissionsToChmod, cC as permissionsToOctal, cD as permissionsToSymbolic, cE as planDebtPayoff, cF as ptToPx, cG as pxToAll, cH as pxToViewport, cI as remToPx, cJ as satisfiesRange, cK as scaleByHeight, cL as scaleByWidth, cM as sortVersions, cN as splitSubnet, cO as symbolicToPermissions, cP as validateBarcode, cQ as validateCardNumber, cR as validateIban, cS as validateIsbn, cT as validateIsin, cU as validateVin, cV as viewportToPx } from '../units-DnWrOTSV.cjs';
@@ -1 +1 @@
1
- export { A as AmortizationRow, a as AnnuityPayoutInput, b as AnnuityPayoutMode, c as AnnuityPayoutResult, d as AnnuityStructure, e as AprApyDirection, f as AprApyResult, g as AspectRatioResult, B as BASE_LABELS, h as BASE_PREFIXES, i as BYTE_UNITS, j as BarcodeFormat, k as BarcodeValidationResult, l as BaseConvertResult, m as BlendedLoanRateResult, n as BreakEvenInput, o as BreakEvenResult, p as ByteConvertResult, q as ByteUnit, C as COMMON_CURRENCIES, r as COMMON_LOCALES, s as COMMON_PERMISSIONS, t as COMMON_RATIOS, v as COMMON_SIZES, w as COMMON_TAX_RATES, x as COMMON_TIP_PERCENTAGES, y as COMMON_VIEWPORTS, z as CardValidationResult, D as CashBreakdownResult, E as CashChangeResult, F as CashDenominationItem, G as CashRoundingMode, H as CashRoundingResult, I as CdMaturityResult, J as CommissionBreakdownEntry, K as CommissionInput, L as CommissionResult, M as CommissionTier, N as CompareUnitPricesResult, O as CompoundInterestResult, P as CompoundYearRow, Q as CreditAccountInput, R as CreditAccountResult, S as CreditCardMinimumPaymentResult, T as CreditUtilizationResult, U as DebtItemInput, V as DebtItemResult, W as DebtPayoffComparison, X as DebtPayoffInput, Y as DebtPayoffPlanResult, Z as DebtPayoffScheduleEntry, _ as DebtPayoffStrategy, $ as DebtPayoffStrategyResult, a0 as DebtToIncomeRatioResult, a1 as DepreciationMethod, a2 as DepreciationResult, a3 as DepreciationYear, a4 as Dimensions, a5 as DiscountField, a6 as DiscountInput, a7 as DiscountResult, a8 as DtiTier, a9 as EmiResult, aa as EmiTenureUnit, ab as EmiYearlyBreakdownRow, ac as ExtraPaymentPayoffResult, ad as FilePermissions, ae as FileSizeUnit, af as FormatOptions, ag as FreelancerRateInput, ah as FreelancerRateResult, ai as GPA_GRADE_POINTS, aj as GpaCourse, ak as GpaCourseResult, al as GpaResult, am as IbanValidationResult, an as IpConversion, ao as IsbnFormat, ap as IsbnResult, aq as IsinValidationResult, ar as LoanBalanceInput, as as LoanBalanceResult, at as LoanPrepaymentPenaltyResult, au as LoanRefinanceResult, av as LoanResult, aw as MarginMarkupField, ax as MarginMarkupInput, ay as MarginMarkupResult, az as MortgagePointsResult, aA as MovingAveragePoint, aB as MovingAverageResult, aC as NotationStyle, aD as NumberBase, aE as PaybackPeriodInput, aF as PaybackPeriodResult, aG as PercentChangeDirection, aH as PercentageChangeResult, aI as Permission, aJ as PrepaymentPenaltyType, aK as PxConvertResult, aL as RangeIntersectionResult, aM as RealRateField, aN as RealRateOfReturnInput, aO as RealRateOfReturnResult, aP as RequiredBandwidthResult, aQ as RoiInput, aR as RoiResult, aS as RuleOf72Direction, aT as RuleOf72Result, aU as SavingsGoalInput, aV as SavingsGoalMode, aW as SavingsGoalResult, aX as SemverVersion, aY as SimpleInterestResult, aZ as SubnetInfo, a_ as SuccessiveDiscountResult, a$ as SuccessiveDiscountStep, b0 as TaxDirection, b1 as TaxEquivalentYieldDirection, b2 as TaxEquivalentYieldResult, b3 as TaxResult, b4 as TimeValueDirection, b5 as TimeValueResult, b6 as TipSplitResult, b7 as TransferSpeedUnit, b8 as TransferTimeResult, b9 as USD_DENOMINATIONS, ba as UnitPriceItem, bb as UnitPriceResult, bc as UtilizationTier, bd as VideoBitrateInput, be as VideoBitrateMode, bf as VideoBitrateResult, bg as ViewportConvertResult, bh as VinValidationResult, bi as applySuccessiveDiscounts, bj as autoFormat, bk as bumpVersion, bl as calcAspectRatio, bm as calcSubnet, bn as calculateAnnuityPayout, bo as calculateBlendedLoanRate, bp as calculateBreakEven, bq as calculateCashBreakdown, br as calculateCashRounding, bs as calculateCdMaturity, bt as calculateChange, bu as calculateCompoundInterest, bv as calculateCreditCardMinimumPayment, bw as calculateCreditUtilization, bx as calculateDebtToIncomeRatio, by as calculateDepreciationSchedule, bz as calculateDiscount, bA as calculateEmi, bB as calculateExtraPaymentPayoff, bC as calculateFreelancerRate, bD as calculateGpa, bE as calculateLoan, bF as calculateLoanPrepaymentPenalty, bG as calculateLoanRefinance, bH as calculateMarginMarkup, bI as calculateMortgagePoints, bJ as calculateMovingAverages, bK as calculatePaybackPeriod, bL as calculatePercentageChange, bM as calculateRealRateOfReturn, bN as calculateRequiredBandwidth, bO as calculateRoi, bP as calculateRuleOf72, bQ as calculateSalesCommission, bR as calculateSavingsGoal, bS as calculateSimpleInterest, bT as calculateTax, bU as calculateTaxEquivalentYield, bV as calculateTimeValue, bW as calculateTipSplit, bX as calculateTransferTime, bY as calculateVideoBitrate, bZ as compareSemver, b_ as compareUnitPrices, b$ as convert, c0 as convertAprApy, c1 as convertBytes, c2 as convertIp, c3 as coverBox, c4 as decimalToIp, c5 as decimalToIpCidr, c6 as describePermissions, c7 as fitIntoBox, c8 as formatNumber, c9 as formatValue, ca as formatVwValue, cb as formatWithSeparator, cc as gcd, cd as intersectSemverRanges, ce as ipFromBinary, cf as ipFromDecimal, cg as ipFromHex, ch as ipToBinary, ci as ipToDecimal, cj as ipToDecimalCidr, ck as ipToHex, cl as ipToOctal, cm as isValid, cn as isValidCidr, co as isValidIp, cp as isValidIpv4, cq as marginToMarkup, cr as markupToMargin, cs as octalToPermissions, ct as parseFileSize, cu as parseInput, cv as parseNumberString, cw as parseSemver, cx as permissionsToChmod, cy as permissionsToOctal, cz as permissionsToSymbolic, cA as planDebtPayoff, cB as ptToPx, cC as pxToAll, cD as pxToViewport, cE as remToPx, cF as satisfiesRange, cG as scaleByHeight, cH as scaleByWidth, cI as sortVersions, cJ as splitSubnet, cK as symbolicToPermissions, cL as validateBarcode, cM as validateCardNumber, cN as validateIban, cO as validateIsbn, cP as validateIsin, cQ as validateVin, cR as viewportToPx } from '../units-D8_JluTD.js';
1
+ export { A as AmortizationRow, a as AnnuityPayoutInput, b as AnnuityPayoutMode, c as AnnuityPayoutResult, d as AnnuityStructure, e as AprApyDirection, f as AprApyResult, g as AspectRatioResult, B as BASE_LABELS, h as BASE_PREFIXES, i as BYTE_UNITS, j as BarcodeFormat, k as BarcodeValidationResult, l as BaseConvertResult, m as BlendedLoanRateResult, n as BreakEvenInput, o as BreakEvenResult, p as ByteConvertResult, q as ByteUnit, C as COMMON_CURRENCIES, r as COMMON_LOCALES, s as COMMON_PERMISSIONS, t as COMMON_RATIOS, v as COMMON_SIZES, w as COMMON_TAX_RATES, x as COMMON_TIP_PERCENTAGES, y as COMMON_VIEWPORTS, z as CardValidationResult, D as CashBreakdownResult, E as CashChangeResult, F as CashDenominationItem, G as CashRoundingMode, H as CashRoundingResult, I as CdMaturityResult, J as CommissionBreakdownEntry, K as CommissionInput, L as CommissionResult, M as CommissionTier, N as CompareUnitPricesResult, O as CompoundInterestResult, P as CompoundYearRow, Q as CreditAccountInput, R as CreditAccountResult, S as CreditCardMinimumPaymentResult, T as CreditUtilizationResult, U as DebtItemInput, V as DebtItemResult, W as DebtPayoffComparison, X as DebtPayoffInput, Y as DebtPayoffPlanResult, Z as DebtPayoffScheduleEntry, _ as DebtPayoffStrategy, $ as DebtPayoffStrategyResult, a0 as DebtToIncomeRatioResult, a1 as DepreciationMethod, a2 as DepreciationResult, a3 as DepreciationYear, a4 as Dimensions, a5 as DiscountField, a6 as DiscountInput, a7 as DiscountResult, a8 as DtiTier, a9 as EmiResult, aa as EmiTenureUnit, ab as EmiYearlyBreakdownRow, ac as ExtraPaymentPayoffResult, ad as FilePermissions, ae as FileSizeUnit, af as FormatOptions, ag as FreelancerRateInput, ah as FreelancerRateResult, ai as GPA_GRADE_POINTS, aj as GpaCourse, ak as GpaCourseResult, al as GpaResult, am as IbanValidationResult, an as IpConversion, ao as IsbnFormat, ap as IsbnResult, aq as IsinValidationResult, ar as LoanBalanceInput, as as LoanBalanceResult, at as LoanPrepaymentPenaltyResult, au as LoanRefinanceResult, av as LoanResult, aw as MarginMarkupField, ax as MarginMarkupInput, ay as MarginMarkupResult, az as MortgagePointsResult, aA as MovingAveragePoint, aB as MovingAverageResult, aC as NegativeAmortizationInput, aD as NegativeAmortizationMonth, aE as NegativeAmortizationResult, aF as NotationStyle, aG as NumberBase, aH as PaybackPeriodInput, aI as PaybackPeriodResult, aJ as PercentChangeDirection, aK as PercentageChangeResult, aL as Permission, aM as PrepaymentPenaltyType, aN as PxConvertResult, aO as RangeIntersectionResult, aP as RealRateField, aQ as RealRateOfReturnInput, aR as RealRateOfReturnResult, aS as RequiredBandwidthResult, aT as RoiInput, aU as RoiResult, aV as RuleOf72Direction, aW as RuleOf72Result, aX as SavingsGoalInput, aY as SavingsGoalMode, aZ as SavingsGoalResult, a_ as SemverVersion, a$ as SimpleInterestResult, b0 as SubnetInfo, b1 as SuccessiveDiscountResult, b2 as SuccessiveDiscountStep, b3 as TaxDirection, b4 as TaxEquivalentYieldDirection, b5 as TaxEquivalentYieldResult, b6 as TaxResult, b7 as TimeValueDirection, b8 as TimeValueResult, b9 as TipSplitResult, ba as TransferSpeedUnit, bb as TransferTimeResult, bc as USD_DENOMINATIONS, bd as UnitPriceItem, be as UnitPriceResult, bf as UtilizationTier, bg as VideoBitrateInput, bh as VideoBitrateMode, bi as VideoBitrateResult, bj as ViewportConvertResult, bk as VinValidationResult, bl as applySuccessiveDiscounts, bm as autoFormat, bn as bumpVersion, bo as calcAspectRatio, bp as calcSubnet, bq as calculateAnnuityPayout, br as calculateBlendedLoanRate, bs as calculateBreakEven, bt as calculateCashBreakdown, bu as calculateCashRounding, bv as calculateCdMaturity, bw as calculateChange, bx as calculateCompoundInterest, by as calculateCreditCardMinimumPayment, bz as calculateCreditUtilization, bA as calculateDebtToIncomeRatio, bB as calculateDepreciationSchedule, bC as calculateDiscount, bD as calculateEmi, bE as calculateExtraPaymentPayoff, bF as calculateFreelancerRate, bG as calculateGpa, bH as calculateLoan, bI as calculateLoanPrepaymentPenalty, bJ as calculateLoanRefinance, bK as calculateMarginMarkup, bL as calculateMortgagePoints, bM as calculateMovingAverages, bN as calculatePaybackPeriod, bO as calculatePercentageChange, bP as calculateRealRateOfReturn, bQ as calculateRequiredBandwidth, bR as calculateRoi, bS as calculateRuleOf72, bT as calculateSalesCommission, bU as calculateSavingsGoal, bV as calculateSimpleInterest, bW as calculateTax, bX as calculateTaxEquivalentYield, bY as calculateTimeValue, bZ as calculateTipSplit, b_ as calculateTransferTime, b$ as calculateVideoBitrate, c0 as compareSemver, c1 as compareUnitPrices, c2 as convert, c3 as convertAprApy, c4 as convertBytes, c5 as convertIp, c6 as coverBox, c7 as decimalToIp, c8 as decimalToIpCidr, c9 as describePermissions, ca as detectNegativeAmortization, cb as fitIntoBox, cc as formatNumber, cd as formatValue, ce as formatVwValue, cf as formatWithSeparator, cg as gcd, ch as intersectSemverRanges, ci as ipFromBinary, cj as ipFromDecimal, ck as ipFromHex, cl as ipToBinary, cm as ipToDecimal, cn as ipToDecimalCidr, co as ipToHex, cp as ipToOctal, cq as isValid, cr as isValidCidr, cs as isValidIp, ct as isValidIpv4, cu as marginToMarkup, cv as markupToMargin, cw as octalToPermissions, cx as parseFileSize, cy as parseInput, cz as parseNumberString, cA as parseSemver, cB as permissionsToChmod, cC as permissionsToOctal, cD as permissionsToSymbolic, cE as planDebtPayoff, cF as ptToPx, cG as pxToAll, cH as pxToViewport, cI as remToPx, cJ as satisfiesRange, cK as scaleByHeight, cL as scaleByWidth, cM as sortVersions, cN as splitSubnet, cO as symbolicToPermissions, cP as validateBarcode, cQ as validateCardNumber, cR as validateIban, cS as validateIsbn, cT as validateIsin, cU as validateVin, cV as viewportToPx } from '../units-DnWrOTSV.js';
@@ -1,2 +1,2 @@
1
- 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, validateBarcode, validateCardNumber, validateIban, validateIsbn, validateIsin, validateVin, viewportToPx } from '../chunk-X3UAAMXF.js';
1
+ 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, validateBarcode, validateCardNumber, validateIban, validateIsbn, validateIsin, validateVin, viewportToPx } from '../chunk-XAPHAUPI.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -51,6 +51,7 @@
51
51
  * - credit-card-minimum-payment-calculator : calculateCreditCardMinimumPayment
52
52
  * - sales-commission-calculator : calculateSalesCommission
53
53
  * - annuity-payout-calculator : calculateAnnuityPayout
54
+ * - negative-amortization-detector : detectNegativeAmortization
54
55
  */
55
56
  interface PxConvertResult {
56
57
  px: number;
@@ -1456,6 +1457,44 @@ interface CommissionResult {
1456
1457
  declare function calculateSalesCommission(input: CommissionInput): CommissionResult | {
1457
1458
  error: string;
1458
1459
  };
1460
+ interface NegativeAmortizationInput {
1461
+ principal: number;
1462
+ annualRatePercent: number;
1463
+ monthlyPayment: number;
1464
+ projectionMonths?: number;
1465
+ capPercent?: number;
1466
+ }
1467
+ interface NegativeAmortizationMonth {
1468
+ month: number;
1469
+ startingBalance: number;
1470
+ interest: number;
1471
+ payment: number;
1472
+ endingBalance: number;
1473
+ }
1474
+ interface NegativeAmortizationResult {
1475
+ monthlyInterest: number;
1476
+ isNegativeAmortizing: boolean;
1477
+ shortfall: number;
1478
+ breakEvenPayment: number;
1479
+ projection: NegativeAmortizationMonth[];
1480
+ capCrossedMonth: number | null;
1481
+ }
1482
+ /**
1483
+ * Given a loan's balance, annual rate, and a proposed monthly payment,
1484
+ * check whether that payment covers the interest accruing each period. If
1485
+ * the payment is less than the interest charge, the loan is negatively
1486
+ * amortizing: the unpaid interest gets added back onto the balance instead
1487
+ * of the balance shrinking, which is exactly how some ARMs and
1488
+ * minimum-payment credit lines quietly grow a balance over time. Reports
1489
+ * the shortfall, the minimum payment that would break even, and a
1490
+ * month-by-month projection (optionally flagging the month the balance
1491
+ * would cross a cap, e.g. 110% of the original principal, common on
1492
+ * option-ARM loans before they force a recast). Pure closed-form interest
1493
+ * arithmetic; this doesn't check a real loan's actual recast terms.
1494
+ */
1495
+ declare function detectNegativeAmortization(input: NegativeAmortizationInput): NegativeAmortizationResult | {
1496
+ error: string;
1497
+ };
1459
1498
 
1460
1499
  type units_AmortizationRow = AmortizationRow;
1461
1500
  type units_AnnuityPayoutInput = AnnuityPayoutInput;
@@ -1548,6 +1587,9 @@ type units_MarginMarkupResult = MarginMarkupResult;
1548
1587
  type units_MortgagePointsResult = MortgagePointsResult;
1549
1588
  type units_MovingAveragePoint = MovingAveragePoint;
1550
1589
  type units_MovingAverageResult = MovingAverageResult;
1590
+ type units_NegativeAmortizationInput = NegativeAmortizationInput;
1591
+ type units_NegativeAmortizationMonth = NegativeAmortizationMonth;
1592
+ type units_NegativeAmortizationResult = NegativeAmortizationResult;
1551
1593
  type units_NotationStyle = NotationStyle;
1552
1594
  type units_NumberBase = NumberBase;
1553
1595
  type units_PaybackPeriodInput = PaybackPeriodInput;
@@ -1645,6 +1687,7 @@ declare const units_coverBox: typeof coverBox;
1645
1687
  declare const units_decimalToIp: typeof decimalToIp;
1646
1688
  declare const units_decimalToIpCidr: typeof decimalToIpCidr;
1647
1689
  declare const units_describePermissions: typeof describePermissions;
1690
+ declare const units_detectNegativeAmortization: typeof detectNegativeAmortization;
1648
1691
  declare const units_fitIntoBox: typeof fitIntoBox;
1649
1692
  declare const units_formatNumber: typeof formatNumber;
1650
1693
  declare const units_formatValue: typeof formatValue;
@@ -1693,7 +1736,7 @@ declare const units_validateIsin: typeof validateIsin;
1693
1736
  declare const units_validateVin: typeof validateVin;
1694
1737
  declare const units_viewportToPx: typeof viewportToPx;
1695
1738
  declare namespace units {
1696
- export { type units_AmortizationRow as AmortizationRow, type units_AnnuityPayoutInput as AnnuityPayoutInput, type units_AnnuityPayoutMode as AnnuityPayoutMode, type units_AnnuityPayoutResult as AnnuityPayoutResult, type units_AnnuityStructure as AnnuityStructure, type units_AprApyDirection as AprApyDirection, type units_AprApyResult as AprApyResult, type units_AspectRatioResult as AspectRatioResult, units_BASE_LABELS as BASE_LABELS, units_BASE_PREFIXES as BASE_PREFIXES, units_BYTE_UNITS as BYTE_UNITS, type units_BarcodeFormat as BarcodeFormat, type units_BarcodeValidationResult as BarcodeValidationResult, type units_BaseConvertResult as BaseConvertResult, type units_BlendedLoanRateResult as BlendedLoanRateResult, type units_BreakEvenInput as BreakEvenInput, type units_BreakEvenResult as BreakEvenResult, type units_ByteConvertResult as ByteConvertResult, type units_ByteUnit as ByteUnit, units_COMMON_CURRENCIES as COMMON_CURRENCIES, units_COMMON_LOCALES as COMMON_LOCALES, units_COMMON_PERMISSIONS as COMMON_PERMISSIONS, units_COMMON_RATIOS as COMMON_RATIOS, units_COMMON_SIZES as COMMON_SIZES, units_COMMON_TAX_RATES as COMMON_TAX_RATES, units_COMMON_TIP_PERCENTAGES as COMMON_TIP_PERCENTAGES, units_COMMON_VIEWPORTS as COMMON_VIEWPORTS, type units_CardValidationResult as CardValidationResult, type units_CashBreakdownResult as CashBreakdownResult, type units_CashChangeResult as CashChangeResult, type units_CashDenominationItem as CashDenominationItem, type units_CashRoundingMode as CashRoundingMode, type units_CashRoundingResult as CashRoundingResult, type units_CdMaturityResult as CdMaturityResult, type units_CommissionBreakdownEntry as CommissionBreakdownEntry, type units_CommissionInput as CommissionInput, type units_CommissionResult as CommissionResult, type units_CommissionTier as CommissionTier, type units_CompareUnitPricesResult as CompareUnitPricesResult, type units_CompoundInterestResult as CompoundInterestResult, type units_CompoundYearRow as CompoundYearRow, type units_CreditAccountInput as CreditAccountInput, type units_CreditAccountResult as CreditAccountResult, type units_CreditCardMinimumPaymentResult as CreditCardMinimumPaymentResult, type units_CreditUtilizationResult as CreditUtilizationResult, type units_DebtItemInput as DebtItemInput, type units_DebtItemResult as DebtItemResult, type units_DebtPayoffComparison as DebtPayoffComparison, type units_DebtPayoffInput as DebtPayoffInput, type units_DebtPayoffPlanResult as DebtPayoffPlanResult, type units_DebtPayoffScheduleEntry as DebtPayoffScheduleEntry, type units_DebtPayoffStrategy as DebtPayoffStrategy, type units_DebtPayoffStrategyResult as DebtPayoffStrategyResult, type units_DebtToIncomeRatioResult as DebtToIncomeRatioResult, type units_DepreciationMethod as DepreciationMethod, type units_DepreciationResult as DepreciationResult, type units_DepreciationYear as DepreciationYear, type units_Dimensions as Dimensions, type units_DiscountField as DiscountField, type units_DiscountInput as DiscountInput, type units_DiscountResult as DiscountResult, type units_DtiTier as DtiTier, type units_EmiResult as EmiResult, type units_EmiTenureUnit as EmiTenureUnit, type units_EmiYearlyBreakdownRow as EmiYearlyBreakdownRow, type units_ExtraPaymentPayoffResult as ExtraPaymentPayoffResult, type units_FilePermissions as FilePermissions, type units_FileSizeUnit as FileSizeUnit, type units_FormatOptions as FormatOptions, type units_FreelancerRateInput as FreelancerRateInput, type units_FreelancerRateResult as FreelancerRateResult, units_GPA_GRADE_POINTS as GPA_GRADE_POINTS, type units_GpaCourse as GpaCourse, type units_GpaCourseResult as GpaCourseResult, type units_GpaResult as GpaResult, type units_IbanValidationResult as IbanValidationResult, type units_IpConversion as IpConversion, type units_IsbnFormat as IsbnFormat, type units_IsbnResult as IsbnResult, type units_IsinValidationResult as IsinValidationResult, type units_LoanBalanceInput as LoanBalanceInput, type units_LoanBalanceResult as LoanBalanceResult, type units_LoanPrepaymentPenaltyResult as LoanPrepaymentPenaltyResult, type units_LoanRefinanceResult as LoanRefinanceResult, type units_LoanResult as LoanResult, type units_MarginMarkupField as MarginMarkupField, type units_MarginMarkupInput as MarginMarkupInput, type units_MarginMarkupResult as MarginMarkupResult, type units_MortgagePointsResult as MortgagePointsResult, type units_MovingAveragePoint as MovingAveragePoint, type units_MovingAverageResult as MovingAverageResult, type units_NotationStyle as NotationStyle, type units_NumberBase as NumberBase, type units_PaybackPeriodInput as PaybackPeriodInput, type units_PaybackPeriodResult as PaybackPeriodResult, type units_PercentChangeDirection as PercentChangeDirection, type units_PercentageChangeResult as PercentageChangeResult, type units_Permission as Permission, type units_PrepaymentPenaltyType as PrepaymentPenaltyType, type units_PxConvertResult as PxConvertResult, type units_RangeIntersectionResult as RangeIntersectionResult, type units_RealRateField as RealRateField, type units_RealRateOfReturnInput as RealRateOfReturnInput, type units_RealRateOfReturnResult as RealRateOfReturnResult, type units_RequiredBandwidthResult as RequiredBandwidthResult, type units_RoiInput as RoiInput, type units_RoiResult as RoiResult, type units_RuleOf72Direction as RuleOf72Direction, type units_RuleOf72Result as RuleOf72Result, type units_SavingsGoalInput as SavingsGoalInput, type units_SavingsGoalMode as SavingsGoalMode, type units_SavingsGoalResult as SavingsGoalResult, type units_SemverVersion as SemverVersion, type units_SimpleInterestResult as SimpleInterestResult, type units_SubnetInfo as SubnetInfo, type units_SuccessiveDiscountResult as SuccessiveDiscountResult, type units_SuccessiveDiscountStep as SuccessiveDiscountStep, type units_TaxDirection as TaxDirection, type units_TaxEquivalentYieldDirection as TaxEquivalentYieldDirection, type units_TaxEquivalentYieldResult as TaxEquivalentYieldResult, type units_TaxResult as TaxResult, type units_TimeValueDirection as TimeValueDirection, type units_TimeValueResult as TimeValueResult, type units_TipSplitResult as TipSplitResult, type units_TransferSpeedUnit as TransferSpeedUnit, type units_TransferTimeResult as TransferTimeResult, units_USD_DENOMINATIONS as USD_DENOMINATIONS, type units_UnitPriceItem as UnitPriceItem, type units_UnitPriceResult as UnitPriceResult, type units_UtilizationTier as UtilizationTier, type units_VideoBitrateInput as VideoBitrateInput, type units_VideoBitrateMode as VideoBitrateMode, type units_VideoBitrateResult as VideoBitrateResult, type units_ViewportConvertResult as ViewportConvertResult, type units_VinValidationResult as VinValidationResult, units_applySuccessiveDiscounts as applySuccessiveDiscounts, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, units_calculateAnnuityPayout as calculateAnnuityPayout, units_calculateBlendedLoanRate as calculateBlendedLoanRate, units_calculateBreakEven as calculateBreakEven, units_calculateCashBreakdown as calculateCashBreakdown, units_calculateCashRounding as calculateCashRounding, units_calculateCdMaturity as calculateCdMaturity, units_calculateChange as calculateChange, units_calculateCompoundInterest as calculateCompoundInterest, units_calculateCreditCardMinimumPayment as calculateCreditCardMinimumPayment, units_calculateCreditUtilization as calculateCreditUtilization, units_calculateDebtToIncomeRatio as calculateDebtToIncomeRatio, units_calculateDepreciationSchedule as calculateDepreciationSchedule, units_calculateDiscount as calculateDiscount, units_calculateEmi as calculateEmi, units_calculateExtraPaymentPayoff as calculateExtraPaymentPayoff, units_calculateFreelancerRate as calculateFreelancerRate, units_calculateGpa as calculateGpa, units_calculateLoan as calculateLoan, units_calculateLoanPrepaymentPenalty as calculateLoanPrepaymentPenalty, units_calculateLoanRefinance as calculateLoanRefinance, units_calculateMarginMarkup as calculateMarginMarkup, units_calculateMortgagePoints as calculateMortgagePoints, units_calculateMovingAverages as calculateMovingAverages, units_calculatePaybackPeriod as calculatePaybackPeriod, units_calculatePercentageChange as calculatePercentageChange, units_calculateRealRateOfReturn as calculateRealRateOfReturn, units_calculateRequiredBandwidth as calculateRequiredBandwidth, units_calculateRoi as calculateRoi, units_calculateRuleOf72 as calculateRuleOf72, units_calculateSalesCommission as calculateSalesCommission, units_calculateSavingsGoal as calculateSavingsGoal, units_calculateSimpleInterest as calculateSimpleInterest, units_calculateTax as calculateTax, units_calculateTaxEquivalentYield as calculateTaxEquivalentYield, units_calculateTimeValue as calculateTimeValue, units_calculateTipSplit as calculateTipSplit, units_calculateTransferTime as calculateTransferTime, units_calculateVideoBitrate as calculateVideoBitrate, units_compareSemver as compareSemver, units_compareUnitPrices as compareUnitPrices, units_convert as convert, units_convertAprApy as convertAprApy, units_convertBytes as convertBytes, units_convertIp as convertIp, units_coverBox as coverBox, units_decimalToIp as decimalToIp, units_decimalToIpCidr as decimalToIpCidr, units_describePermissions as describePermissions, units_fitIntoBox as fitIntoBox, units_formatNumber as formatNumber, units_formatValue as formatValue, units_formatVwValue as formatVwValue, units_formatWithSeparator as formatWithSeparator, units_gcd as gcd, units_intersectSemverRanges as intersectSemverRanges, units_ipFromBinary as ipFromBinary, units_ipFromDecimal as ipFromDecimal, units_ipFromHex as ipFromHex, units_ipToBinary as ipToBinary, units_ipToDecimal as ipToDecimal, units_ipToDecimalCidr as ipToDecimalCidr, units_ipToHex as ipToHex, units_ipToOctal as ipToOctal, units_isValid as isValid, units_isValidCidr as isValidCidr, units_isValidIp as isValidIp, units_isValidIpv4 as isValidIpv4, units_marginToMarkup as marginToMarkup, units_markupToMargin as markupToMargin, units_octalToPermissions as octalToPermissions, units_parseFileSize as parseFileSize, units_parseInput as parseInput, units_parseNumberString as parseNumberString, units_parseSemver as parseSemver, units_permissionsToChmod as permissionsToChmod, units_permissionsToOctal as permissionsToOctal, units_permissionsToSymbolic as permissionsToSymbolic, units_planDebtPayoff as planDebtPayoff, units_ptToPx as ptToPx, units_pxToAll as pxToAll, units_pxToViewport as pxToViewport, units_remToPx as remToPx, units_satisfiesRange as satisfiesRange, units_scaleByHeight as scaleByHeight, units_scaleByWidth as scaleByWidth, units_sortVersions as sortVersions, units_splitSubnet as splitSubnet, units_symbolicToPermissions as symbolicToPermissions, units_validateBarcode as validateBarcode, units_validateCardNumber as validateCardNumber, units_validateIban as validateIban, units_validateIsbn as validateIsbn, units_validateIsin as validateIsin, units_validateVin as validateVin, units_viewportToPx as viewportToPx };
1739
+ export { type units_AmortizationRow as AmortizationRow, type units_AnnuityPayoutInput as AnnuityPayoutInput, type units_AnnuityPayoutMode as AnnuityPayoutMode, type units_AnnuityPayoutResult as AnnuityPayoutResult, type units_AnnuityStructure as AnnuityStructure, type units_AprApyDirection as AprApyDirection, type units_AprApyResult as AprApyResult, type units_AspectRatioResult as AspectRatioResult, units_BASE_LABELS as BASE_LABELS, units_BASE_PREFIXES as BASE_PREFIXES, units_BYTE_UNITS as BYTE_UNITS, type units_BarcodeFormat as BarcodeFormat, type units_BarcodeValidationResult as BarcodeValidationResult, type units_BaseConvertResult as BaseConvertResult, type units_BlendedLoanRateResult as BlendedLoanRateResult, type units_BreakEvenInput as BreakEvenInput, type units_BreakEvenResult as BreakEvenResult, type units_ByteConvertResult as ByteConvertResult, type units_ByteUnit as ByteUnit, units_COMMON_CURRENCIES as COMMON_CURRENCIES, units_COMMON_LOCALES as COMMON_LOCALES, units_COMMON_PERMISSIONS as COMMON_PERMISSIONS, units_COMMON_RATIOS as COMMON_RATIOS, units_COMMON_SIZES as COMMON_SIZES, units_COMMON_TAX_RATES as COMMON_TAX_RATES, units_COMMON_TIP_PERCENTAGES as COMMON_TIP_PERCENTAGES, units_COMMON_VIEWPORTS as COMMON_VIEWPORTS, type units_CardValidationResult as CardValidationResult, type units_CashBreakdownResult as CashBreakdownResult, type units_CashChangeResult as CashChangeResult, type units_CashDenominationItem as CashDenominationItem, type units_CashRoundingMode as CashRoundingMode, type units_CashRoundingResult as CashRoundingResult, type units_CdMaturityResult as CdMaturityResult, type units_CommissionBreakdownEntry as CommissionBreakdownEntry, type units_CommissionInput as CommissionInput, type units_CommissionResult as CommissionResult, type units_CommissionTier as CommissionTier, type units_CompareUnitPricesResult as CompareUnitPricesResult, type units_CompoundInterestResult as CompoundInterestResult, type units_CompoundYearRow as CompoundYearRow, type units_CreditAccountInput as CreditAccountInput, type units_CreditAccountResult as CreditAccountResult, type units_CreditCardMinimumPaymentResult as CreditCardMinimumPaymentResult, type units_CreditUtilizationResult as CreditUtilizationResult, type units_DebtItemInput as DebtItemInput, type units_DebtItemResult as DebtItemResult, type units_DebtPayoffComparison as DebtPayoffComparison, type units_DebtPayoffInput as DebtPayoffInput, type units_DebtPayoffPlanResult as DebtPayoffPlanResult, type units_DebtPayoffScheduleEntry as DebtPayoffScheduleEntry, type units_DebtPayoffStrategy as DebtPayoffStrategy, type units_DebtPayoffStrategyResult as DebtPayoffStrategyResult, type units_DebtToIncomeRatioResult as DebtToIncomeRatioResult, type units_DepreciationMethod as DepreciationMethod, type units_DepreciationResult as DepreciationResult, type units_DepreciationYear as DepreciationYear, type units_Dimensions as Dimensions, type units_DiscountField as DiscountField, type units_DiscountInput as DiscountInput, type units_DiscountResult as DiscountResult, type units_DtiTier as DtiTier, type units_EmiResult as EmiResult, type units_EmiTenureUnit as EmiTenureUnit, type units_EmiYearlyBreakdownRow as EmiYearlyBreakdownRow, type units_ExtraPaymentPayoffResult as ExtraPaymentPayoffResult, type units_FilePermissions as FilePermissions, type units_FileSizeUnit as FileSizeUnit, type units_FormatOptions as FormatOptions, type units_FreelancerRateInput as FreelancerRateInput, type units_FreelancerRateResult as FreelancerRateResult, units_GPA_GRADE_POINTS as GPA_GRADE_POINTS, type units_GpaCourse as GpaCourse, type units_GpaCourseResult as GpaCourseResult, type units_GpaResult as GpaResult, type units_IbanValidationResult as IbanValidationResult, type units_IpConversion as IpConversion, type units_IsbnFormat as IsbnFormat, type units_IsbnResult as IsbnResult, type units_IsinValidationResult as IsinValidationResult, type units_LoanBalanceInput as LoanBalanceInput, type units_LoanBalanceResult as LoanBalanceResult, type units_LoanPrepaymentPenaltyResult as LoanPrepaymentPenaltyResult, type units_LoanRefinanceResult as LoanRefinanceResult, type units_LoanResult as LoanResult, type units_MarginMarkupField as MarginMarkupField, type units_MarginMarkupInput as MarginMarkupInput, type units_MarginMarkupResult as MarginMarkupResult, type units_MortgagePointsResult as MortgagePointsResult, type units_MovingAveragePoint as MovingAveragePoint, type units_MovingAverageResult as MovingAverageResult, type units_NegativeAmortizationInput as NegativeAmortizationInput, type units_NegativeAmortizationMonth as NegativeAmortizationMonth, type units_NegativeAmortizationResult as NegativeAmortizationResult, type units_NotationStyle as NotationStyle, type units_NumberBase as NumberBase, type units_PaybackPeriodInput as PaybackPeriodInput, type units_PaybackPeriodResult as PaybackPeriodResult, type units_PercentChangeDirection as PercentChangeDirection, type units_PercentageChangeResult as PercentageChangeResult, type units_Permission as Permission, type units_PrepaymentPenaltyType as PrepaymentPenaltyType, type units_PxConvertResult as PxConvertResult, type units_RangeIntersectionResult as RangeIntersectionResult, type units_RealRateField as RealRateField, type units_RealRateOfReturnInput as RealRateOfReturnInput, type units_RealRateOfReturnResult as RealRateOfReturnResult, type units_RequiredBandwidthResult as RequiredBandwidthResult, type units_RoiInput as RoiInput, type units_RoiResult as RoiResult, type units_RuleOf72Direction as RuleOf72Direction, type units_RuleOf72Result as RuleOf72Result, type units_SavingsGoalInput as SavingsGoalInput, type units_SavingsGoalMode as SavingsGoalMode, type units_SavingsGoalResult as SavingsGoalResult, type units_SemverVersion as SemverVersion, type units_SimpleInterestResult as SimpleInterestResult, type units_SubnetInfo as SubnetInfo, type units_SuccessiveDiscountResult as SuccessiveDiscountResult, type units_SuccessiveDiscountStep as SuccessiveDiscountStep, type units_TaxDirection as TaxDirection, type units_TaxEquivalentYieldDirection as TaxEquivalentYieldDirection, type units_TaxEquivalentYieldResult as TaxEquivalentYieldResult, type units_TaxResult as TaxResult, type units_TimeValueDirection as TimeValueDirection, type units_TimeValueResult as TimeValueResult, type units_TipSplitResult as TipSplitResult, type units_TransferSpeedUnit as TransferSpeedUnit, type units_TransferTimeResult as TransferTimeResult, units_USD_DENOMINATIONS as USD_DENOMINATIONS, type units_UnitPriceItem as UnitPriceItem, type units_UnitPriceResult as UnitPriceResult, type units_UtilizationTier as UtilizationTier, type units_VideoBitrateInput as VideoBitrateInput, type units_VideoBitrateMode as VideoBitrateMode, type units_VideoBitrateResult as VideoBitrateResult, type units_ViewportConvertResult as ViewportConvertResult, type units_VinValidationResult as VinValidationResult, units_applySuccessiveDiscounts as applySuccessiveDiscounts, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, units_calculateAnnuityPayout as calculateAnnuityPayout, units_calculateBlendedLoanRate as calculateBlendedLoanRate, units_calculateBreakEven as calculateBreakEven, units_calculateCashBreakdown as calculateCashBreakdown, units_calculateCashRounding as calculateCashRounding, units_calculateCdMaturity as calculateCdMaturity, units_calculateChange as calculateChange, units_calculateCompoundInterest as calculateCompoundInterest, units_calculateCreditCardMinimumPayment as calculateCreditCardMinimumPayment, units_calculateCreditUtilization as calculateCreditUtilization, units_calculateDebtToIncomeRatio as calculateDebtToIncomeRatio, units_calculateDepreciationSchedule as calculateDepreciationSchedule, units_calculateDiscount as calculateDiscount, units_calculateEmi as calculateEmi, units_calculateExtraPaymentPayoff as calculateExtraPaymentPayoff, units_calculateFreelancerRate as calculateFreelancerRate, units_calculateGpa as calculateGpa, units_calculateLoan as calculateLoan, units_calculateLoanPrepaymentPenalty as calculateLoanPrepaymentPenalty, units_calculateLoanRefinance as calculateLoanRefinance, units_calculateMarginMarkup as calculateMarginMarkup, units_calculateMortgagePoints as calculateMortgagePoints, units_calculateMovingAverages as calculateMovingAverages, units_calculatePaybackPeriod as calculatePaybackPeriod, units_calculatePercentageChange as calculatePercentageChange, units_calculateRealRateOfReturn as calculateRealRateOfReturn, units_calculateRequiredBandwidth as calculateRequiredBandwidth, units_calculateRoi as calculateRoi, units_calculateRuleOf72 as calculateRuleOf72, units_calculateSalesCommission as calculateSalesCommission, units_calculateSavingsGoal as calculateSavingsGoal, units_calculateSimpleInterest as calculateSimpleInterest, units_calculateTax as calculateTax, units_calculateTaxEquivalentYield as calculateTaxEquivalentYield, units_calculateTimeValue as calculateTimeValue, units_calculateTipSplit as calculateTipSplit, units_calculateTransferTime as calculateTransferTime, units_calculateVideoBitrate as calculateVideoBitrate, units_compareSemver as compareSemver, units_compareUnitPrices as compareUnitPrices, units_convert as convert, units_convertAprApy as convertAprApy, units_convertBytes as convertBytes, units_convertIp as convertIp, units_coverBox as coverBox, units_decimalToIp as decimalToIp, units_decimalToIpCidr as decimalToIpCidr, units_describePermissions as describePermissions, units_detectNegativeAmortization as detectNegativeAmortization, units_fitIntoBox as fitIntoBox, units_formatNumber as formatNumber, units_formatValue as formatValue, units_formatVwValue as formatVwValue, units_formatWithSeparator as formatWithSeparator, units_gcd as gcd, units_intersectSemverRanges as intersectSemverRanges, units_ipFromBinary as ipFromBinary, units_ipFromDecimal as ipFromDecimal, units_ipFromHex as ipFromHex, units_ipToBinary as ipToBinary, units_ipToDecimal as ipToDecimal, units_ipToDecimalCidr as ipToDecimalCidr, units_ipToHex as ipToHex, units_ipToOctal as ipToOctal, units_isValid as isValid, units_isValidCidr as isValidCidr, units_isValidIp as isValidIp, units_isValidIpv4 as isValidIpv4, units_marginToMarkup as marginToMarkup, units_markupToMargin as markupToMargin, units_octalToPermissions as octalToPermissions, units_parseFileSize as parseFileSize, units_parseInput as parseInput, units_parseNumberString as parseNumberString, units_parseSemver as parseSemver, units_permissionsToChmod as permissionsToChmod, units_permissionsToOctal as permissionsToOctal, units_permissionsToSymbolic as permissionsToSymbolic, units_planDebtPayoff as planDebtPayoff, units_ptToPx as ptToPx, units_pxToAll as pxToAll, units_pxToViewport as pxToViewport, units_remToPx as remToPx, units_satisfiesRange as satisfiesRange, units_scaleByHeight as scaleByHeight, units_scaleByWidth as scaleByWidth, units_sortVersions as sortVersions, units_splitSubnet as splitSubnet, units_symbolicToPermissions as symbolicToPermissions, units_validateBarcode as validateBarcode, units_validateCardNumber as validateCardNumber, units_validateIban as validateIban, units_validateIsbn as validateIsbn, units_validateIsin as validateIsin, units_validateVin as validateVin, units_viewportToPx as viewportToPx };
1697
1740
  }
1698
1741
 
1699
- export { type DebtPayoffStrategyResult as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type CashBreakdownResult as D, type CashChangeResult as E, type CashDenominationItem as F, type CashRoundingMode as G, type CashRoundingResult as H, type CdMaturityResult as I, type CommissionBreakdownEntry as J, type CommissionInput as K, type CommissionResult as L, type CommissionTier as M, type CompareUnitPricesResult as N, type CompoundInterestResult as O, type CompoundYearRow as P, type CreditAccountInput as Q, type CreditAccountResult as R, type CreditCardMinimumPaymentResult as S, type CreditUtilizationResult as T, type DebtItemInput as U, type DebtItemResult as V, type DebtPayoffComparison as W, type DebtPayoffInput as X, type DebtPayoffPlanResult as Y, type DebtPayoffScheduleEntry as Z, type DebtPayoffStrategy as _, type AnnuityPayoutInput as a, type SuccessiveDiscountStep as a$, type DebtToIncomeRatioResult as a0, type DepreciationMethod as a1, type DepreciationResult as a2, type DepreciationYear as a3, type Dimensions as a4, type DiscountField as a5, type DiscountInput as a6, type DiscountResult as a7, type DtiTier as a8, type EmiResult as a9, type MovingAveragePoint as aA, type MovingAverageResult as aB, type NotationStyle as aC, type NumberBase as aD, type PaybackPeriodInput as aE, type PaybackPeriodResult as aF, type PercentChangeDirection as aG, type PercentageChangeResult as aH, type Permission as aI, type PrepaymentPenaltyType as aJ, type PxConvertResult as aK, type RangeIntersectionResult as aL, type RealRateField as aM, type RealRateOfReturnInput as aN, type RealRateOfReturnResult as aO, type RequiredBandwidthResult as aP, type RoiInput as aQ, type RoiResult as aR, type RuleOf72Direction as aS, type RuleOf72Result as aT, type SavingsGoalInput as aU, type SavingsGoalMode as aV, type SavingsGoalResult as aW, type SemverVersion as aX, type SimpleInterestResult as aY, type SubnetInfo as aZ, type SuccessiveDiscountResult as a_, type EmiTenureUnit as aa, type EmiYearlyBreakdownRow as ab, type ExtraPaymentPayoffResult as ac, type FilePermissions as ad, type FileSizeUnit as ae, type FormatOptions as af, type FreelancerRateInput as ag, type FreelancerRateResult as ah, GPA_GRADE_POINTS as ai, type GpaCourse as aj, type GpaCourseResult as ak, type GpaResult as al, type IbanValidationResult as am, type IpConversion as an, type IsbnFormat as ao, type IsbnResult as ap, type IsinValidationResult as aq, type LoanBalanceInput as ar, type LoanBalanceResult as as, type LoanPrepaymentPenaltyResult as at, type LoanRefinanceResult as au, type LoanResult as av, type MarginMarkupField as aw, type MarginMarkupInput as ax, type MarginMarkupResult as ay, type MortgagePointsResult as az, type AnnuityPayoutMode as b, convert as b$, type TaxDirection as b0, type TaxEquivalentYieldDirection as b1, type TaxEquivalentYieldResult as b2, type TaxResult as b3, type TimeValueDirection as b4, type TimeValueResult as b5, type TipSplitResult as b6, type TransferSpeedUnit as b7, type TransferTimeResult as b8, USD_DENOMINATIONS as b9, calculateEmi as bA, calculateExtraPaymentPayoff as bB, calculateFreelancerRate as bC, calculateGpa as bD, calculateLoan as bE, calculateLoanPrepaymentPenalty as bF, calculateLoanRefinance as bG, calculateMarginMarkup as bH, calculateMortgagePoints as bI, calculateMovingAverages as bJ, calculatePaybackPeriod as bK, calculatePercentageChange as bL, calculateRealRateOfReturn as bM, calculateRequiredBandwidth as bN, calculateRoi as bO, calculateRuleOf72 as bP, calculateSalesCommission as bQ, calculateSavingsGoal as bR, calculateSimpleInterest as bS, calculateTax as bT, calculateTaxEquivalentYield as bU, calculateTimeValue as bV, calculateTipSplit as bW, calculateTransferTime as bX, calculateVideoBitrate as bY, compareSemver as bZ, compareUnitPrices as b_, type UnitPriceItem as ba, type UnitPriceResult as bb, type UtilizationTier as bc, type VideoBitrateInput as bd, type VideoBitrateMode as be, type VideoBitrateResult as bf, type ViewportConvertResult as bg, type VinValidationResult as bh, applySuccessiveDiscounts as bi, autoFormat as bj, bumpVersion as bk, calcAspectRatio as bl, calcSubnet as bm, calculateAnnuityPayout as bn, calculateBlendedLoanRate as bo, calculateBreakEven as bp, calculateCashBreakdown as bq, calculateCashRounding as br, calculateCdMaturity as bs, calculateChange as bt, calculateCompoundInterest as bu, calculateCreditCardMinimumPayment as bv, calculateCreditUtilization as bw, calculateDebtToIncomeRatio as bx, calculateDepreciationSchedule as by, calculateDiscount as bz, type AnnuityPayoutResult as c, convertAprApy as c0, convertBytes as c1, convertIp as c2, coverBox as c3, decimalToIp as c4, decimalToIpCidr as c5, describePermissions as c6, fitIntoBox as c7, formatNumber as c8, formatValue as c9, planDebtPayoff as cA, ptToPx as cB, pxToAll as cC, pxToViewport as cD, remToPx as cE, satisfiesRange as cF, scaleByHeight as cG, scaleByWidth as cH, sortVersions as cI, splitSubnet as cJ, symbolicToPermissions as cK, validateBarcode as cL, validateCardNumber as cM, validateIban as cN, validateIsbn as cO, validateIsin as cP, validateVin as cQ, viewportToPx as cR, formatVwValue as ca, formatWithSeparator as cb, gcd as cc, intersectSemverRanges as cd, ipFromBinary as ce, ipFromDecimal as cf, ipFromHex as cg, ipToBinary as ch, ipToDecimal as ci, ipToDecimalCidr as cj, ipToHex as ck, ipToOctal as cl, isValid as cm, isValidCidr as cn, isValidIp as co, isValidIpv4 as cp, marginToMarkup as cq, markupToMargin as cr, octalToPermissions as cs, parseFileSize as ct, parseInput as cu, parseNumberString as cv, parseSemver as cw, permissionsToChmod as cx, permissionsToOctal as cy, permissionsToSymbolic as cz, type AnnuityStructure as d, type AprApyDirection as e, type AprApyResult as f, type AspectRatioResult as g, BASE_PREFIXES as h, BYTE_UNITS as i, type BarcodeFormat as j, type BarcodeValidationResult as k, type BaseConvertResult as l, type BlendedLoanRateResult as m, type BreakEvenInput as n, type BreakEvenResult as o, type ByteConvertResult as p, type ByteUnit as q, COMMON_LOCALES as r, COMMON_PERMISSIONS as s, COMMON_RATIOS as t, units as u, COMMON_SIZES as v, COMMON_TAX_RATES as w, COMMON_TIP_PERCENTAGES as x, COMMON_VIEWPORTS as y, type CardValidationResult as z };
1742
+ export { type DebtPayoffStrategyResult as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type CashBreakdownResult as D, type CashChangeResult as E, type CashDenominationItem as F, type CashRoundingMode as G, type CashRoundingResult as H, type CdMaturityResult as I, type CommissionBreakdownEntry as J, type CommissionInput as K, type CommissionResult as L, type CommissionTier as M, type CompareUnitPricesResult as N, type CompoundInterestResult as O, type CompoundYearRow as P, type CreditAccountInput as Q, type CreditAccountResult as R, type CreditCardMinimumPaymentResult as S, type CreditUtilizationResult as T, type DebtItemInput as U, type DebtItemResult as V, type DebtPayoffComparison as W, type DebtPayoffInput as X, type DebtPayoffPlanResult as Y, type DebtPayoffScheduleEntry as Z, type DebtPayoffStrategy as _, type AnnuityPayoutInput as a, type SimpleInterestResult as a$, type DebtToIncomeRatioResult as a0, type DepreciationMethod as a1, type DepreciationResult as a2, type DepreciationYear as a3, type Dimensions as a4, type DiscountField as a5, type DiscountInput as a6, type DiscountResult as a7, type DtiTier as a8, type EmiResult as a9, type MovingAveragePoint as aA, type MovingAverageResult as aB, type NegativeAmortizationInput as aC, type NegativeAmortizationMonth as aD, type NegativeAmortizationResult as aE, type NotationStyle as aF, type NumberBase as aG, type PaybackPeriodInput as aH, type PaybackPeriodResult as aI, type PercentChangeDirection as aJ, type PercentageChangeResult as aK, type Permission as aL, type PrepaymentPenaltyType as aM, type PxConvertResult as aN, type RangeIntersectionResult as aO, type RealRateField as aP, type RealRateOfReturnInput as aQ, type RealRateOfReturnResult as aR, type RequiredBandwidthResult as aS, type RoiInput as aT, type RoiResult as aU, type RuleOf72Direction as aV, type RuleOf72Result as aW, type SavingsGoalInput as aX, type SavingsGoalMode as aY, type SavingsGoalResult as aZ, type SemverVersion as a_, type EmiTenureUnit as aa, type EmiYearlyBreakdownRow as ab, type ExtraPaymentPayoffResult as ac, type FilePermissions as ad, type FileSizeUnit as ae, type FormatOptions as af, type FreelancerRateInput as ag, type FreelancerRateResult as ah, GPA_GRADE_POINTS as ai, type GpaCourse as aj, type GpaCourseResult as ak, type GpaResult as al, type IbanValidationResult as am, type IpConversion as an, type IsbnFormat as ao, type IsbnResult as ap, type IsinValidationResult as aq, type LoanBalanceInput as ar, type LoanBalanceResult as as, type LoanPrepaymentPenaltyResult as at, type LoanRefinanceResult as au, type LoanResult as av, type MarginMarkupField as aw, type MarginMarkupInput as ax, type MarginMarkupResult as ay, type MortgagePointsResult as az, type AnnuityPayoutMode as b, calculateVideoBitrate as b$, type SubnetInfo as b0, type SuccessiveDiscountResult as b1, type SuccessiveDiscountStep as b2, type TaxDirection as b3, type TaxEquivalentYieldDirection as b4, type TaxEquivalentYieldResult as b5, type TaxResult as b6, type TimeValueDirection as b7, type TimeValueResult as b8, type TipSplitResult as b9, calculateDebtToIncomeRatio as bA, calculateDepreciationSchedule as bB, calculateDiscount as bC, calculateEmi as bD, calculateExtraPaymentPayoff as bE, calculateFreelancerRate as bF, calculateGpa as bG, calculateLoan as bH, calculateLoanPrepaymentPenalty as bI, calculateLoanRefinance as bJ, calculateMarginMarkup as bK, calculateMortgagePoints as bL, calculateMovingAverages as bM, calculatePaybackPeriod as bN, calculatePercentageChange as bO, calculateRealRateOfReturn as bP, calculateRequiredBandwidth as bQ, calculateRoi as bR, calculateRuleOf72 as bS, calculateSalesCommission as bT, calculateSavingsGoal as bU, calculateSimpleInterest as bV, calculateTax as bW, calculateTaxEquivalentYield as bX, calculateTimeValue as bY, calculateTipSplit as bZ, calculateTransferTime as b_, type TransferSpeedUnit as ba, type TransferTimeResult as bb, USD_DENOMINATIONS as bc, type UnitPriceItem as bd, type UnitPriceResult as be, type UtilizationTier as bf, type VideoBitrateInput as bg, type VideoBitrateMode as bh, type VideoBitrateResult as bi, type ViewportConvertResult as bj, type VinValidationResult as bk, applySuccessiveDiscounts as bl, autoFormat as bm, bumpVersion as bn, calcAspectRatio as bo, calcSubnet as bp, calculateAnnuityPayout as bq, calculateBlendedLoanRate as br, calculateBreakEven as bs, calculateCashBreakdown as bt, calculateCashRounding as bu, calculateCdMaturity as bv, calculateChange as bw, calculateCompoundInterest as bx, calculateCreditCardMinimumPayment as by, calculateCreditUtilization as bz, type AnnuityPayoutResult as c, compareSemver as c0, compareUnitPrices as c1, convert as c2, convertAprApy as c3, convertBytes as c4, convertIp as c5, coverBox as c6, decimalToIp as c7, decimalToIpCidr as c8, describePermissions as c9, parseSemver as cA, permissionsToChmod as cB, permissionsToOctal as cC, permissionsToSymbolic as cD, planDebtPayoff as cE, ptToPx as cF, pxToAll as cG, pxToViewport as cH, remToPx as cI, satisfiesRange as cJ, scaleByHeight as cK, scaleByWidth as cL, sortVersions as cM, splitSubnet as cN, symbolicToPermissions as cO, validateBarcode as cP, validateCardNumber as cQ, validateIban as cR, validateIsbn as cS, validateIsin as cT, validateVin as cU, viewportToPx as cV, detectNegativeAmortization as ca, fitIntoBox as cb, formatNumber as cc, formatValue as cd, formatVwValue as ce, formatWithSeparator as cf, gcd as cg, intersectSemverRanges as ch, ipFromBinary as ci, ipFromDecimal as cj, ipFromHex as ck, ipToBinary as cl, ipToDecimal as cm, ipToDecimalCidr as cn, ipToHex as co, ipToOctal as cp, isValid as cq, isValidCidr as cr, isValidIp as cs, isValidIpv4 as ct, marginToMarkup as cu, markupToMargin as cv, octalToPermissions as cw, parseFileSize as cx, parseInput as cy, parseNumberString as cz, type AnnuityStructure as d, type AprApyDirection as e, type AprApyResult as f, type AspectRatioResult as g, BASE_PREFIXES as h, BYTE_UNITS as i, type BarcodeFormat as j, type BarcodeValidationResult as k, type BaseConvertResult as l, type BlendedLoanRateResult as m, type BreakEvenInput as n, type BreakEvenResult as o, type ByteConvertResult as p, type ByteUnit as q, COMMON_LOCALES as r, COMMON_PERMISSIONS as s, COMMON_RATIOS as t, units as u, COMMON_SIZES as v, COMMON_TAX_RATES as w, COMMON_TIP_PERCENTAGES as x, COMMON_VIEWPORTS as y, type CardValidationResult as z };
@@ -51,6 +51,7 @@
51
51
  * - credit-card-minimum-payment-calculator : calculateCreditCardMinimumPayment
52
52
  * - sales-commission-calculator : calculateSalesCommission
53
53
  * - annuity-payout-calculator : calculateAnnuityPayout
54
+ * - negative-amortization-detector : detectNegativeAmortization
54
55
  */
55
56
  interface PxConvertResult {
56
57
  px: number;
@@ -1456,6 +1457,44 @@ interface CommissionResult {
1456
1457
  declare function calculateSalesCommission(input: CommissionInput): CommissionResult | {
1457
1458
  error: string;
1458
1459
  };
1460
+ interface NegativeAmortizationInput {
1461
+ principal: number;
1462
+ annualRatePercent: number;
1463
+ monthlyPayment: number;
1464
+ projectionMonths?: number;
1465
+ capPercent?: number;
1466
+ }
1467
+ interface NegativeAmortizationMonth {
1468
+ month: number;
1469
+ startingBalance: number;
1470
+ interest: number;
1471
+ payment: number;
1472
+ endingBalance: number;
1473
+ }
1474
+ interface NegativeAmortizationResult {
1475
+ monthlyInterest: number;
1476
+ isNegativeAmortizing: boolean;
1477
+ shortfall: number;
1478
+ breakEvenPayment: number;
1479
+ projection: NegativeAmortizationMonth[];
1480
+ capCrossedMonth: number | null;
1481
+ }
1482
+ /**
1483
+ * Given a loan's balance, annual rate, and a proposed monthly payment,
1484
+ * check whether that payment covers the interest accruing each period. If
1485
+ * the payment is less than the interest charge, the loan is negatively
1486
+ * amortizing: the unpaid interest gets added back onto the balance instead
1487
+ * of the balance shrinking, which is exactly how some ARMs and
1488
+ * minimum-payment credit lines quietly grow a balance over time. Reports
1489
+ * the shortfall, the minimum payment that would break even, and a
1490
+ * month-by-month projection (optionally flagging the month the balance
1491
+ * would cross a cap, e.g. 110% of the original principal, common on
1492
+ * option-ARM loans before they force a recast). Pure closed-form interest
1493
+ * arithmetic; this doesn't check a real loan's actual recast terms.
1494
+ */
1495
+ declare function detectNegativeAmortization(input: NegativeAmortizationInput): NegativeAmortizationResult | {
1496
+ error: string;
1497
+ };
1459
1498
 
1460
1499
  type units_AmortizationRow = AmortizationRow;
1461
1500
  type units_AnnuityPayoutInput = AnnuityPayoutInput;
@@ -1548,6 +1587,9 @@ type units_MarginMarkupResult = MarginMarkupResult;
1548
1587
  type units_MortgagePointsResult = MortgagePointsResult;
1549
1588
  type units_MovingAveragePoint = MovingAveragePoint;
1550
1589
  type units_MovingAverageResult = MovingAverageResult;
1590
+ type units_NegativeAmortizationInput = NegativeAmortizationInput;
1591
+ type units_NegativeAmortizationMonth = NegativeAmortizationMonth;
1592
+ type units_NegativeAmortizationResult = NegativeAmortizationResult;
1551
1593
  type units_NotationStyle = NotationStyle;
1552
1594
  type units_NumberBase = NumberBase;
1553
1595
  type units_PaybackPeriodInput = PaybackPeriodInput;
@@ -1645,6 +1687,7 @@ declare const units_coverBox: typeof coverBox;
1645
1687
  declare const units_decimalToIp: typeof decimalToIp;
1646
1688
  declare const units_decimalToIpCidr: typeof decimalToIpCidr;
1647
1689
  declare const units_describePermissions: typeof describePermissions;
1690
+ declare const units_detectNegativeAmortization: typeof detectNegativeAmortization;
1648
1691
  declare const units_fitIntoBox: typeof fitIntoBox;
1649
1692
  declare const units_formatNumber: typeof formatNumber;
1650
1693
  declare const units_formatValue: typeof formatValue;
@@ -1693,7 +1736,7 @@ declare const units_validateIsin: typeof validateIsin;
1693
1736
  declare const units_validateVin: typeof validateVin;
1694
1737
  declare const units_viewportToPx: typeof viewportToPx;
1695
1738
  declare namespace units {
1696
- export { type units_AmortizationRow as AmortizationRow, type units_AnnuityPayoutInput as AnnuityPayoutInput, type units_AnnuityPayoutMode as AnnuityPayoutMode, type units_AnnuityPayoutResult as AnnuityPayoutResult, type units_AnnuityStructure as AnnuityStructure, type units_AprApyDirection as AprApyDirection, type units_AprApyResult as AprApyResult, type units_AspectRatioResult as AspectRatioResult, units_BASE_LABELS as BASE_LABELS, units_BASE_PREFIXES as BASE_PREFIXES, units_BYTE_UNITS as BYTE_UNITS, type units_BarcodeFormat as BarcodeFormat, type units_BarcodeValidationResult as BarcodeValidationResult, type units_BaseConvertResult as BaseConvertResult, type units_BlendedLoanRateResult as BlendedLoanRateResult, type units_BreakEvenInput as BreakEvenInput, type units_BreakEvenResult as BreakEvenResult, type units_ByteConvertResult as ByteConvertResult, type units_ByteUnit as ByteUnit, units_COMMON_CURRENCIES as COMMON_CURRENCIES, units_COMMON_LOCALES as COMMON_LOCALES, units_COMMON_PERMISSIONS as COMMON_PERMISSIONS, units_COMMON_RATIOS as COMMON_RATIOS, units_COMMON_SIZES as COMMON_SIZES, units_COMMON_TAX_RATES as COMMON_TAX_RATES, units_COMMON_TIP_PERCENTAGES as COMMON_TIP_PERCENTAGES, units_COMMON_VIEWPORTS as COMMON_VIEWPORTS, type units_CardValidationResult as CardValidationResult, type units_CashBreakdownResult as CashBreakdownResult, type units_CashChangeResult as CashChangeResult, type units_CashDenominationItem as CashDenominationItem, type units_CashRoundingMode as CashRoundingMode, type units_CashRoundingResult as CashRoundingResult, type units_CdMaturityResult as CdMaturityResult, type units_CommissionBreakdownEntry as CommissionBreakdownEntry, type units_CommissionInput as CommissionInput, type units_CommissionResult as CommissionResult, type units_CommissionTier as CommissionTier, type units_CompareUnitPricesResult as CompareUnitPricesResult, type units_CompoundInterestResult as CompoundInterestResult, type units_CompoundYearRow as CompoundYearRow, type units_CreditAccountInput as CreditAccountInput, type units_CreditAccountResult as CreditAccountResult, type units_CreditCardMinimumPaymentResult as CreditCardMinimumPaymentResult, type units_CreditUtilizationResult as CreditUtilizationResult, type units_DebtItemInput as DebtItemInput, type units_DebtItemResult as DebtItemResult, type units_DebtPayoffComparison as DebtPayoffComparison, type units_DebtPayoffInput as DebtPayoffInput, type units_DebtPayoffPlanResult as DebtPayoffPlanResult, type units_DebtPayoffScheduleEntry as DebtPayoffScheduleEntry, type units_DebtPayoffStrategy as DebtPayoffStrategy, type units_DebtPayoffStrategyResult as DebtPayoffStrategyResult, type units_DebtToIncomeRatioResult as DebtToIncomeRatioResult, type units_DepreciationMethod as DepreciationMethod, type units_DepreciationResult as DepreciationResult, type units_DepreciationYear as DepreciationYear, type units_Dimensions as Dimensions, type units_DiscountField as DiscountField, type units_DiscountInput as DiscountInput, type units_DiscountResult as DiscountResult, type units_DtiTier as DtiTier, type units_EmiResult as EmiResult, type units_EmiTenureUnit as EmiTenureUnit, type units_EmiYearlyBreakdownRow as EmiYearlyBreakdownRow, type units_ExtraPaymentPayoffResult as ExtraPaymentPayoffResult, type units_FilePermissions as FilePermissions, type units_FileSizeUnit as FileSizeUnit, type units_FormatOptions as FormatOptions, type units_FreelancerRateInput as FreelancerRateInput, type units_FreelancerRateResult as FreelancerRateResult, units_GPA_GRADE_POINTS as GPA_GRADE_POINTS, type units_GpaCourse as GpaCourse, type units_GpaCourseResult as GpaCourseResult, type units_GpaResult as GpaResult, type units_IbanValidationResult as IbanValidationResult, type units_IpConversion as IpConversion, type units_IsbnFormat as IsbnFormat, type units_IsbnResult as IsbnResult, type units_IsinValidationResult as IsinValidationResult, type units_LoanBalanceInput as LoanBalanceInput, type units_LoanBalanceResult as LoanBalanceResult, type units_LoanPrepaymentPenaltyResult as LoanPrepaymentPenaltyResult, type units_LoanRefinanceResult as LoanRefinanceResult, type units_LoanResult as LoanResult, type units_MarginMarkupField as MarginMarkupField, type units_MarginMarkupInput as MarginMarkupInput, type units_MarginMarkupResult as MarginMarkupResult, type units_MortgagePointsResult as MortgagePointsResult, type units_MovingAveragePoint as MovingAveragePoint, type units_MovingAverageResult as MovingAverageResult, type units_NotationStyle as NotationStyle, type units_NumberBase as NumberBase, type units_PaybackPeriodInput as PaybackPeriodInput, type units_PaybackPeriodResult as PaybackPeriodResult, type units_PercentChangeDirection as PercentChangeDirection, type units_PercentageChangeResult as PercentageChangeResult, type units_Permission as Permission, type units_PrepaymentPenaltyType as PrepaymentPenaltyType, type units_PxConvertResult as PxConvertResult, type units_RangeIntersectionResult as RangeIntersectionResult, type units_RealRateField as RealRateField, type units_RealRateOfReturnInput as RealRateOfReturnInput, type units_RealRateOfReturnResult as RealRateOfReturnResult, type units_RequiredBandwidthResult as RequiredBandwidthResult, type units_RoiInput as RoiInput, type units_RoiResult as RoiResult, type units_RuleOf72Direction as RuleOf72Direction, type units_RuleOf72Result as RuleOf72Result, type units_SavingsGoalInput as SavingsGoalInput, type units_SavingsGoalMode as SavingsGoalMode, type units_SavingsGoalResult as SavingsGoalResult, type units_SemverVersion as SemverVersion, type units_SimpleInterestResult as SimpleInterestResult, type units_SubnetInfo as SubnetInfo, type units_SuccessiveDiscountResult as SuccessiveDiscountResult, type units_SuccessiveDiscountStep as SuccessiveDiscountStep, type units_TaxDirection as TaxDirection, type units_TaxEquivalentYieldDirection as TaxEquivalentYieldDirection, type units_TaxEquivalentYieldResult as TaxEquivalentYieldResult, type units_TaxResult as TaxResult, type units_TimeValueDirection as TimeValueDirection, type units_TimeValueResult as TimeValueResult, type units_TipSplitResult as TipSplitResult, type units_TransferSpeedUnit as TransferSpeedUnit, type units_TransferTimeResult as TransferTimeResult, units_USD_DENOMINATIONS as USD_DENOMINATIONS, type units_UnitPriceItem as UnitPriceItem, type units_UnitPriceResult as UnitPriceResult, type units_UtilizationTier as UtilizationTier, type units_VideoBitrateInput as VideoBitrateInput, type units_VideoBitrateMode as VideoBitrateMode, type units_VideoBitrateResult as VideoBitrateResult, type units_ViewportConvertResult as ViewportConvertResult, type units_VinValidationResult as VinValidationResult, units_applySuccessiveDiscounts as applySuccessiveDiscounts, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, units_calculateAnnuityPayout as calculateAnnuityPayout, units_calculateBlendedLoanRate as calculateBlendedLoanRate, units_calculateBreakEven as calculateBreakEven, units_calculateCashBreakdown as calculateCashBreakdown, units_calculateCashRounding as calculateCashRounding, units_calculateCdMaturity as calculateCdMaturity, units_calculateChange as calculateChange, units_calculateCompoundInterest as calculateCompoundInterest, units_calculateCreditCardMinimumPayment as calculateCreditCardMinimumPayment, units_calculateCreditUtilization as calculateCreditUtilization, units_calculateDebtToIncomeRatio as calculateDebtToIncomeRatio, units_calculateDepreciationSchedule as calculateDepreciationSchedule, units_calculateDiscount as calculateDiscount, units_calculateEmi as calculateEmi, units_calculateExtraPaymentPayoff as calculateExtraPaymentPayoff, units_calculateFreelancerRate as calculateFreelancerRate, units_calculateGpa as calculateGpa, units_calculateLoan as calculateLoan, units_calculateLoanPrepaymentPenalty as calculateLoanPrepaymentPenalty, units_calculateLoanRefinance as calculateLoanRefinance, units_calculateMarginMarkup as calculateMarginMarkup, units_calculateMortgagePoints as calculateMortgagePoints, units_calculateMovingAverages as calculateMovingAverages, units_calculatePaybackPeriod as calculatePaybackPeriod, units_calculatePercentageChange as calculatePercentageChange, units_calculateRealRateOfReturn as calculateRealRateOfReturn, units_calculateRequiredBandwidth as calculateRequiredBandwidth, units_calculateRoi as calculateRoi, units_calculateRuleOf72 as calculateRuleOf72, units_calculateSalesCommission as calculateSalesCommission, units_calculateSavingsGoal as calculateSavingsGoal, units_calculateSimpleInterest as calculateSimpleInterest, units_calculateTax as calculateTax, units_calculateTaxEquivalentYield as calculateTaxEquivalentYield, units_calculateTimeValue as calculateTimeValue, units_calculateTipSplit as calculateTipSplit, units_calculateTransferTime as calculateTransferTime, units_calculateVideoBitrate as calculateVideoBitrate, units_compareSemver as compareSemver, units_compareUnitPrices as compareUnitPrices, units_convert as convert, units_convertAprApy as convertAprApy, units_convertBytes as convertBytes, units_convertIp as convertIp, units_coverBox as coverBox, units_decimalToIp as decimalToIp, units_decimalToIpCidr as decimalToIpCidr, units_describePermissions as describePermissions, units_fitIntoBox as fitIntoBox, units_formatNumber as formatNumber, units_formatValue as formatValue, units_formatVwValue as formatVwValue, units_formatWithSeparator as formatWithSeparator, units_gcd as gcd, units_intersectSemverRanges as intersectSemverRanges, units_ipFromBinary as ipFromBinary, units_ipFromDecimal as ipFromDecimal, units_ipFromHex as ipFromHex, units_ipToBinary as ipToBinary, units_ipToDecimal as ipToDecimal, units_ipToDecimalCidr as ipToDecimalCidr, units_ipToHex as ipToHex, units_ipToOctal as ipToOctal, units_isValid as isValid, units_isValidCidr as isValidCidr, units_isValidIp as isValidIp, units_isValidIpv4 as isValidIpv4, units_marginToMarkup as marginToMarkup, units_markupToMargin as markupToMargin, units_octalToPermissions as octalToPermissions, units_parseFileSize as parseFileSize, units_parseInput as parseInput, units_parseNumberString as parseNumberString, units_parseSemver as parseSemver, units_permissionsToChmod as permissionsToChmod, units_permissionsToOctal as permissionsToOctal, units_permissionsToSymbolic as permissionsToSymbolic, units_planDebtPayoff as planDebtPayoff, units_ptToPx as ptToPx, units_pxToAll as pxToAll, units_pxToViewport as pxToViewport, units_remToPx as remToPx, units_satisfiesRange as satisfiesRange, units_scaleByHeight as scaleByHeight, units_scaleByWidth as scaleByWidth, units_sortVersions as sortVersions, units_splitSubnet as splitSubnet, units_symbolicToPermissions as symbolicToPermissions, units_validateBarcode as validateBarcode, units_validateCardNumber as validateCardNumber, units_validateIban as validateIban, units_validateIsbn as validateIsbn, units_validateIsin as validateIsin, units_validateVin as validateVin, units_viewportToPx as viewportToPx };
1739
+ export { type units_AmortizationRow as AmortizationRow, type units_AnnuityPayoutInput as AnnuityPayoutInput, type units_AnnuityPayoutMode as AnnuityPayoutMode, type units_AnnuityPayoutResult as AnnuityPayoutResult, type units_AnnuityStructure as AnnuityStructure, type units_AprApyDirection as AprApyDirection, type units_AprApyResult as AprApyResult, type units_AspectRatioResult as AspectRatioResult, units_BASE_LABELS as BASE_LABELS, units_BASE_PREFIXES as BASE_PREFIXES, units_BYTE_UNITS as BYTE_UNITS, type units_BarcodeFormat as BarcodeFormat, type units_BarcodeValidationResult as BarcodeValidationResult, type units_BaseConvertResult as BaseConvertResult, type units_BlendedLoanRateResult as BlendedLoanRateResult, type units_BreakEvenInput as BreakEvenInput, type units_BreakEvenResult as BreakEvenResult, type units_ByteConvertResult as ByteConvertResult, type units_ByteUnit as ByteUnit, units_COMMON_CURRENCIES as COMMON_CURRENCIES, units_COMMON_LOCALES as COMMON_LOCALES, units_COMMON_PERMISSIONS as COMMON_PERMISSIONS, units_COMMON_RATIOS as COMMON_RATIOS, units_COMMON_SIZES as COMMON_SIZES, units_COMMON_TAX_RATES as COMMON_TAX_RATES, units_COMMON_TIP_PERCENTAGES as COMMON_TIP_PERCENTAGES, units_COMMON_VIEWPORTS as COMMON_VIEWPORTS, type units_CardValidationResult as CardValidationResult, type units_CashBreakdownResult as CashBreakdownResult, type units_CashChangeResult as CashChangeResult, type units_CashDenominationItem as CashDenominationItem, type units_CashRoundingMode as CashRoundingMode, type units_CashRoundingResult as CashRoundingResult, type units_CdMaturityResult as CdMaturityResult, type units_CommissionBreakdownEntry as CommissionBreakdownEntry, type units_CommissionInput as CommissionInput, type units_CommissionResult as CommissionResult, type units_CommissionTier as CommissionTier, type units_CompareUnitPricesResult as CompareUnitPricesResult, type units_CompoundInterestResult as CompoundInterestResult, type units_CompoundYearRow as CompoundYearRow, type units_CreditAccountInput as CreditAccountInput, type units_CreditAccountResult as CreditAccountResult, type units_CreditCardMinimumPaymentResult as CreditCardMinimumPaymentResult, type units_CreditUtilizationResult as CreditUtilizationResult, type units_DebtItemInput as DebtItemInput, type units_DebtItemResult as DebtItemResult, type units_DebtPayoffComparison as DebtPayoffComparison, type units_DebtPayoffInput as DebtPayoffInput, type units_DebtPayoffPlanResult as DebtPayoffPlanResult, type units_DebtPayoffScheduleEntry as DebtPayoffScheduleEntry, type units_DebtPayoffStrategy as DebtPayoffStrategy, type units_DebtPayoffStrategyResult as DebtPayoffStrategyResult, type units_DebtToIncomeRatioResult as DebtToIncomeRatioResult, type units_DepreciationMethod as DepreciationMethod, type units_DepreciationResult as DepreciationResult, type units_DepreciationYear as DepreciationYear, type units_Dimensions as Dimensions, type units_DiscountField as DiscountField, type units_DiscountInput as DiscountInput, type units_DiscountResult as DiscountResult, type units_DtiTier as DtiTier, type units_EmiResult as EmiResult, type units_EmiTenureUnit as EmiTenureUnit, type units_EmiYearlyBreakdownRow as EmiYearlyBreakdownRow, type units_ExtraPaymentPayoffResult as ExtraPaymentPayoffResult, type units_FilePermissions as FilePermissions, type units_FileSizeUnit as FileSizeUnit, type units_FormatOptions as FormatOptions, type units_FreelancerRateInput as FreelancerRateInput, type units_FreelancerRateResult as FreelancerRateResult, units_GPA_GRADE_POINTS as GPA_GRADE_POINTS, type units_GpaCourse as GpaCourse, type units_GpaCourseResult as GpaCourseResult, type units_GpaResult as GpaResult, type units_IbanValidationResult as IbanValidationResult, type units_IpConversion as IpConversion, type units_IsbnFormat as IsbnFormat, type units_IsbnResult as IsbnResult, type units_IsinValidationResult as IsinValidationResult, type units_LoanBalanceInput as LoanBalanceInput, type units_LoanBalanceResult as LoanBalanceResult, type units_LoanPrepaymentPenaltyResult as LoanPrepaymentPenaltyResult, type units_LoanRefinanceResult as LoanRefinanceResult, type units_LoanResult as LoanResult, type units_MarginMarkupField as MarginMarkupField, type units_MarginMarkupInput as MarginMarkupInput, type units_MarginMarkupResult as MarginMarkupResult, type units_MortgagePointsResult as MortgagePointsResult, type units_MovingAveragePoint as MovingAveragePoint, type units_MovingAverageResult as MovingAverageResult, type units_NegativeAmortizationInput as NegativeAmortizationInput, type units_NegativeAmortizationMonth as NegativeAmortizationMonth, type units_NegativeAmortizationResult as NegativeAmortizationResult, type units_NotationStyle as NotationStyle, type units_NumberBase as NumberBase, type units_PaybackPeriodInput as PaybackPeriodInput, type units_PaybackPeriodResult as PaybackPeriodResult, type units_PercentChangeDirection as PercentChangeDirection, type units_PercentageChangeResult as PercentageChangeResult, type units_Permission as Permission, type units_PrepaymentPenaltyType as PrepaymentPenaltyType, type units_PxConvertResult as PxConvertResult, type units_RangeIntersectionResult as RangeIntersectionResult, type units_RealRateField as RealRateField, type units_RealRateOfReturnInput as RealRateOfReturnInput, type units_RealRateOfReturnResult as RealRateOfReturnResult, type units_RequiredBandwidthResult as RequiredBandwidthResult, type units_RoiInput as RoiInput, type units_RoiResult as RoiResult, type units_RuleOf72Direction as RuleOf72Direction, type units_RuleOf72Result as RuleOf72Result, type units_SavingsGoalInput as SavingsGoalInput, type units_SavingsGoalMode as SavingsGoalMode, type units_SavingsGoalResult as SavingsGoalResult, type units_SemverVersion as SemverVersion, type units_SimpleInterestResult as SimpleInterestResult, type units_SubnetInfo as SubnetInfo, type units_SuccessiveDiscountResult as SuccessiveDiscountResult, type units_SuccessiveDiscountStep as SuccessiveDiscountStep, type units_TaxDirection as TaxDirection, type units_TaxEquivalentYieldDirection as TaxEquivalentYieldDirection, type units_TaxEquivalentYieldResult as TaxEquivalentYieldResult, type units_TaxResult as TaxResult, type units_TimeValueDirection as TimeValueDirection, type units_TimeValueResult as TimeValueResult, type units_TipSplitResult as TipSplitResult, type units_TransferSpeedUnit as TransferSpeedUnit, type units_TransferTimeResult as TransferTimeResult, units_USD_DENOMINATIONS as USD_DENOMINATIONS, type units_UnitPriceItem as UnitPriceItem, type units_UnitPriceResult as UnitPriceResult, type units_UtilizationTier as UtilizationTier, type units_VideoBitrateInput as VideoBitrateInput, type units_VideoBitrateMode as VideoBitrateMode, type units_VideoBitrateResult as VideoBitrateResult, type units_ViewportConvertResult as ViewportConvertResult, type units_VinValidationResult as VinValidationResult, units_applySuccessiveDiscounts as applySuccessiveDiscounts, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, units_calculateAnnuityPayout as calculateAnnuityPayout, units_calculateBlendedLoanRate as calculateBlendedLoanRate, units_calculateBreakEven as calculateBreakEven, units_calculateCashBreakdown as calculateCashBreakdown, units_calculateCashRounding as calculateCashRounding, units_calculateCdMaturity as calculateCdMaturity, units_calculateChange as calculateChange, units_calculateCompoundInterest as calculateCompoundInterest, units_calculateCreditCardMinimumPayment as calculateCreditCardMinimumPayment, units_calculateCreditUtilization as calculateCreditUtilization, units_calculateDebtToIncomeRatio as calculateDebtToIncomeRatio, units_calculateDepreciationSchedule as calculateDepreciationSchedule, units_calculateDiscount as calculateDiscount, units_calculateEmi as calculateEmi, units_calculateExtraPaymentPayoff as calculateExtraPaymentPayoff, units_calculateFreelancerRate as calculateFreelancerRate, units_calculateGpa as calculateGpa, units_calculateLoan as calculateLoan, units_calculateLoanPrepaymentPenalty as calculateLoanPrepaymentPenalty, units_calculateLoanRefinance as calculateLoanRefinance, units_calculateMarginMarkup as calculateMarginMarkup, units_calculateMortgagePoints as calculateMortgagePoints, units_calculateMovingAverages as calculateMovingAverages, units_calculatePaybackPeriod as calculatePaybackPeriod, units_calculatePercentageChange as calculatePercentageChange, units_calculateRealRateOfReturn as calculateRealRateOfReturn, units_calculateRequiredBandwidth as calculateRequiredBandwidth, units_calculateRoi as calculateRoi, units_calculateRuleOf72 as calculateRuleOf72, units_calculateSalesCommission as calculateSalesCommission, units_calculateSavingsGoal as calculateSavingsGoal, units_calculateSimpleInterest as calculateSimpleInterest, units_calculateTax as calculateTax, units_calculateTaxEquivalentYield as calculateTaxEquivalentYield, units_calculateTimeValue as calculateTimeValue, units_calculateTipSplit as calculateTipSplit, units_calculateTransferTime as calculateTransferTime, units_calculateVideoBitrate as calculateVideoBitrate, units_compareSemver as compareSemver, units_compareUnitPrices as compareUnitPrices, units_convert as convert, units_convertAprApy as convertAprApy, units_convertBytes as convertBytes, units_convertIp as convertIp, units_coverBox as coverBox, units_decimalToIp as decimalToIp, units_decimalToIpCidr as decimalToIpCidr, units_describePermissions as describePermissions, units_detectNegativeAmortization as detectNegativeAmortization, units_fitIntoBox as fitIntoBox, units_formatNumber as formatNumber, units_formatValue as formatValue, units_formatVwValue as formatVwValue, units_formatWithSeparator as formatWithSeparator, units_gcd as gcd, units_intersectSemverRanges as intersectSemverRanges, units_ipFromBinary as ipFromBinary, units_ipFromDecimal as ipFromDecimal, units_ipFromHex as ipFromHex, units_ipToBinary as ipToBinary, units_ipToDecimal as ipToDecimal, units_ipToDecimalCidr as ipToDecimalCidr, units_ipToHex as ipToHex, units_ipToOctal as ipToOctal, units_isValid as isValid, units_isValidCidr as isValidCidr, units_isValidIp as isValidIp, units_isValidIpv4 as isValidIpv4, units_marginToMarkup as marginToMarkup, units_markupToMargin as markupToMargin, units_octalToPermissions as octalToPermissions, units_parseFileSize as parseFileSize, units_parseInput as parseInput, units_parseNumberString as parseNumberString, units_parseSemver as parseSemver, units_permissionsToChmod as permissionsToChmod, units_permissionsToOctal as permissionsToOctal, units_permissionsToSymbolic as permissionsToSymbolic, units_planDebtPayoff as planDebtPayoff, units_ptToPx as ptToPx, units_pxToAll as pxToAll, units_pxToViewport as pxToViewport, units_remToPx as remToPx, units_satisfiesRange as satisfiesRange, units_scaleByHeight as scaleByHeight, units_scaleByWidth as scaleByWidth, units_sortVersions as sortVersions, units_splitSubnet as splitSubnet, units_symbolicToPermissions as symbolicToPermissions, units_validateBarcode as validateBarcode, units_validateCardNumber as validateCardNumber, units_validateIban as validateIban, units_validateIsbn as validateIsbn, units_validateIsin as validateIsin, units_validateVin as validateVin, units_viewportToPx as viewportToPx };
1697
1740
  }
1698
1741
 
1699
- export { type DebtPayoffStrategyResult as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type CashBreakdownResult as D, type CashChangeResult as E, type CashDenominationItem as F, type CashRoundingMode as G, type CashRoundingResult as H, type CdMaturityResult as I, type CommissionBreakdownEntry as J, type CommissionInput as K, type CommissionResult as L, type CommissionTier as M, type CompareUnitPricesResult as N, type CompoundInterestResult as O, type CompoundYearRow as P, type CreditAccountInput as Q, type CreditAccountResult as R, type CreditCardMinimumPaymentResult as S, type CreditUtilizationResult as T, type DebtItemInput as U, type DebtItemResult as V, type DebtPayoffComparison as W, type DebtPayoffInput as X, type DebtPayoffPlanResult as Y, type DebtPayoffScheduleEntry as Z, type DebtPayoffStrategy as _, type AnnuityPayoutInput as a, type SuccessiveDiscountStep as a$, type DebtToIncomeRatioResult as a0, type DepreciationMethod as a1, type DepreciationResult as a2, type DepreciationYear as a3, type Dimensions as a4, type DiscountField as a5, type DiscountInput as a6, type DiscountResult as a7, type DtiTier as a8, type EmiResult as a9, type MovingAveragePoint as aA, type MovingAverageResult as aB, type NotationStyle as aC, type NumberBase as aD, type PaybackPeriodInput as aE, type PaybackPeriodResult as aF, type PercentChangeDirection as aG, type PercentageChangeResult as aH, type Permission as aI, type PrepaymentPenaltyType as aJ, type PxConvertResult as aK, type RangeIntersectionResult as aL, type RealRateField as aM, type RealRateOfReturnInput as aN, type RealRateOfReturnResult as aO, type RequiredBandwidthResult as aP, type RoiInput as aQ, type RoiResult as aR, type RuleOf72Direction as aS, type RuleOf72Result as aT, type SavingsGoalInput as aU, type SavingsGoalMode as aV, type SavingsGoalResult as aW, type SemverVersion as aX, type SimpleInterestResult as aY, type SubnetInfo as aZ, type SuccessiveDiscountResult as a_, type EmiTenureUnit as aa, type EmiYearlyBreakdownRow as ab, type ExtraPaymentPayoffResult as ac, type FilePermissions as ad, type FileSizeUnit as ae, type FormatOptions as af, type FreelancerRateInput as ag, type FreelancerRateResult as ah, GPA_GRADE_POINTS as ai, type GpaCourse as aj, type GpaCourseResult as ak, type GpaResult as al, type IbanValidationResult as am, type IpConversion as an, type IsbnFormat as ao, type IsbnResult as ap, type IsinValidationResult as aq, type LoanBalanceInput as ar, type LoanBalanceResult as as, type LoanPrepaymentPenaltyResult as at, type LoanRefinanceResult as au, type LoanResult as av, type MarginMarkupField as aw, type MarginMarkupInput as ax, type MarginMarkupResult as ay, type MortgagePointsResult as az, type AnnuityPayoutMode as b, convert as b$, type TaxDirection as b0, type TaxEquivalentYieldDirection as b1, type TaxEquivalentYieldResult as b2, type TaxResult as b3, type TimeValueDirection as b4, type TimeValueResult as b5, type TipSplitResult as b6, type TransferSpeedUnit as b7, type TransferTimeResult as b8, USD_DENOMINATIONS as b9, calculateEmi as bA, calculateExtraPaymentPayoff as bB, calculateFreelancerRate as bC, calculateGpa as bD, calculateLoan as bE, calculateLoanPrepaymentPenalty as bF, calculateLoanRefinance as bG, calculateMarginMarkup as bH, calculateMortgagePoints as bI, calculateMovingAverages as bJ, calculatePaybackPeriod as bK, calculatePercentageChange as bL, calculateRealRateOfReturn as bM, calculateRequiredBandwidth as bN, calculateRoi as bO, calculateRuleOf72 as bP, calculateSalesCommission as bQ, calculateSavingsGoal as bR, calculateSimpleInterest as bS, calculateTax as bT, calculateTaxEquivalentYield as bU, calculateTimeValue as bV, calculateTipSplit as bW, calculateTransferTime as bX, calculateVideoBitrate as bY, compareSemver as bZ, compareUnitPrices as b_, type UnitPriceItem as ba, type UnitPriceResult as bb, type UtilizationTier as bc, type VideoBitrateInput as bd, type VideoBitrateMode as be, type VideoBitrateResult as bf, type ViewportConvertResult as bg, type VinValidationResult as bh, applySuccessiveDiscounts as bi, autoFormat as bj, bumpVersion as bk, calcAspectRatio as bl, calcSubnet as bm, calculateAnnuityPayout as bn, calculateBlendedLoanRate as bo, calculateBreakEven as bp, calculateCashBreakdown as bq, calculateCashRounding as br, calculateCdMaturity as bs, calculateChange as bt, calculateCompoundInterest as bu, calculateCreditCardMinimumPayment as bv, calculateCreditUtilization as bw, calculateDebtToIncomeRatio as bx, calculateDepreciationSchedule as by, calculateDiscount as bz, type AnnuityPayoutResult as c, convertAprApy as c0, convertBytes as c1, convertIp as c2, coverBox as c3, decimalToIp as c4, decimalToIpCidr as c5, describePermissions as c6, fitIntoBox as c7, formatNumber as c8, formatValue as c9, planDebtPayoff as cA, ptToPx as cB, pxToAll as cC, pxToViewport as cD, remToPx as cE, satisfiesRange as cF, scaleByHeight as cG, scaleByWidth as cH, sortVersions as cI, splitSubnet as cJ, symbolicToPermissions as cK, validateBarcode as cL, validateCardNumber as cM, validateIban as cN, validateIsbn as cO, validateIsin as cP, validateVin as cQ, viewportToPx as cR, formatVwValue as ca, formatWithSeparator as cb, gcd as cc, intersectSemverRanges as cd, ipFromBinary as ce, ipFromDecimal as cf, ipFromHex as cg, ipToBinary as ch, ipToDecimal as ci, ipToDecimalCidr as cj, ipToHex as ck, ipToOctal as cl, isValid as cm, isValidCidr as cn, isValidIp as co, isValidIpv4 as cp, marginToMarkup as cq, markupToMargin as cr, octalToPermissions as cs, parseFileSize as ct, parseInput as cu, parseNumberString as cv, parseSemver as cw, permissionsToChmod as cx, permissionsToOctal as cy, permissionsToSymbolic as cz, type AnnuityStructure as d, type AprApyDirection as e, type AprApyResult as f, type AspectRatioResult as g, BASE_PREFIXES as h, BYTE_UNITS as i, type BarcodeFormat as j, type BarcodeValidationResult as k, type BaseConvertResult as l, type BlendedLoanRateResult as m, type BreakEvenInput as n, type BreakEvenResult as o, type ByteConvertResult as p, type ByteUnit as q, COMMON_LOCALES as r, COMMON_PERMISSIONS as s, COMMON_RATIOS as t, units as u, COMMON_SIZES as v, COMMON_TAX_RATES as w, COMMON_TIP_PERCENTAGES as x, COMMON_VIEWPORTS as y, type CardValidationResult as z };
1742
+ export { type DebtPayoffStrategyResult as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type CashBreakdownResult as D, type CashChangeResult as E, type CashDenominationItem as F, type CashRoundingMode as G, type CashRoundingResult as H, type CdMaturityResult as I, type CommissionBreakdownEntry as J, type CommissionInput as K, type CommissionResult as L, type CommissionTier as M, type CompareUnitPricesResult as N, type CompoundInterestResult as O, type CompoundYearRow as P, type CreditAccountInput as Q, type CreditAccountResult as R, type CreditCardMinimumPaymentResult as S, type CreditUtilizationResult as T, type DebtItemInput as U, type DebtItemResult as V, type DebtPayoffComparison as W, type DebtPayoffInput as X, type DebtPayoffPlanResult as Y, type DebtPayoffScheduleEntry as Z, type DebtPayoffStrategy as _, type AnnuityPayoutInput as a, type SimpleInterestResult as a$, type DebtToIncomeRatioResult as a0, type DepreciationMethod as a1, type DepreciationResult as a2, type DepreciationYear as a3, type Dimensions as a4, type DiscountField as a5, type DiscountInput as a6, type DiscountResult as a7, type DtiTier as a8, type EmiResult as a9, type MovingAveragePoint as aA, type MovingAverageResult as aB, type NegativeAmortizationInput as aC, type NegativeAmortizationMonth as aD, type NegativeAmortizationResult as aE, type NotationStyle as aF, type NumberBase as aG, type PaybackPeriodInput as aH, type PaybackPeriodResult as aI, type PercentChangeDirection as aJ, type PercentageChangeResult as aK, type Permission as aL, type PrepaymentPenaltyType as aM, type PxConvertResult as aN, type RangeIntersectionResult as aO, type RealRateField as aP, type RealRateOfReturnInput as aQ, type RealRateOfReturnResult as aR, type RequiredBandwidthResult as aS, type RoiInput as aT, type RoiResult as aU, type RuleOf72Direction as aV, type RuleOf72Result as aW, type SavingsGoalInput as aX, type SavingsGoalMode as aY, type SavingsGoalResult as aZ, type SemverVersion as a_, type EmiTenureUnit as aa, type EmiYearlyBreakdownRow as ab, type ExtraPaymentPayoffResult as ac, type FilePermissions as ad, type FileSizeUnit as ae, type FormatOptions as af, type FreelancerRateInput as ag, type FreelancerRateResult as ah, GPA_GRADE_POINTS as ai, type GpaCourse as aj, type GpaCourseResult as ak, type GpaResult as al, type IbanValidationResult as am, type IpConversion as an, type IsbnFormat as ao, type IsbnResult as ap, type IsinValidationResult as aq, type LoanBalanceInput as ar, type LoanBalanceResult as as, type LoanPrepaymentPenaltyResult as at, type LoanRefinanceResult as au, type LoanResult as av, type MarginMarkupField as aw, type MarginMarkupInput as ax, type MarginMarkupResult as ay, type MortgagePointsResult as az, type AnnuityPayoutMode as b, calculateVideoBitrate as b$, type SubnetInfo as b0, type SuccessiveDiscountResult as b1, type SuccessiveDiscountStep as b2, type TaxDirection as b3, type TaxEquivalentYieldDirection as b4, type TaxEquivalentYieldResult as b5, type TaxResult as b6, type TimeValueDirection as b7, type TimeValueResult as b8, type TipSplitResult as b9, calculateDebtToIncomeRatio as bA, calculateDepreciationSchedule as bB, calculateDiscount as bC, calculateEmi as bD, calculateExtraPaymentPayoff as bE, calculateFreelancerRate as bF, calculateGpa as bG, calculateLoan as bH, calculateLoanPrepaymentPenalty as bI, calculateLoanRefinance as bJ, calculateMarginMarkup as bK, calculateMortgagePoints as bL, calculateMovingAverages as bM, calculatePaybackPeriod as bN, calculatePercentageChange as bO, calculateRealRateOfReturn as bP, calculateRequiredBandwidth as bQ, calculateRoi as bR, calculateRuleOf72 as bS, calculateSalesCommission as bT, calculateSavingsGoal as bU, calculateSimpleInterest as bV, calculateTax as bW, calculateTaxEquivalentYield as bX, calculateTimeValue as bY, calculateTipSplit as bZ, calculateTransferTime as b_, type TransferSpeedUnit as ba, type TransferTimeResult as bb, USD_DENOMINATIONS as bc, type UnitPriceItem as bd, type UnitPriceResult as be, type UtilizationTier as bf, type VideoBitrateInput as bg, type VideoBitrateMode as bh, type VideoBitrateResult as bi, type ViewportConvertResult as bj, type VinValidationResult as bk, applySuccessiveDiscounts as bl, autoFormat as bm, bumpVersion as bn, calcAspectRatio as bo, calcSubnet as bp, calculateAnnuityPayout as bq, calculateBlendedLoanRate as br, calculateBreakEven as bs, calculateCashBreakdown as bt, calculateCashRounding as bu, calculateCdMaturity as bv, calculateChange as bw, calculateCompoundInterest as bx, calculateCreditCardMinimumPayment as by, calculateCreditUtilization as bz, type AnnuityPayoutResult as c, compareSemver as c0, compareUnitPrices as c1, convert as c2, convertAprApy as c3, convertBytes as c4, convertIp as c5, coverBox as c6, decimalToIp as c7, decimalToIpCidr as c8, describePermissions as c9, parseSemver as cA, permissionsToChmod as cB, permissionsToOctal as cC, permissionsToSymbolic as cD, planDebtPayoff as cE, ptToPx as cF, pxToAll as cG, pxToViewport as cH, remToPx as cI, satisfiesRange as cJ, scaleByHeight as cK, scaleByWidth as cL, sortVersions as cM, splitSubnet as cN, symbolicToPermissions as cO, validateBarcode as cP, validateCardNumber as cQ, validateIban as cR, validateIsbn as cS, validateIsin as cT, validateVin as cU, viewportToPx as cV, detectNegativeAmortization as ca, fitIntoBox as cb, formatNumber as cc, formatValue as cd, formatVwValue as ce, formatWithSeparator as cf, gcd as cg, intersectSemverRanges as ch, ipFromBinary as ci, ipFromDecimal as cj, ipFromHex as ck, ipToBinary as cl, ipToDecimal as cm, ipToDecimalCidr as cn, ipToHex as co, ipToOctal as cp, isValid as cq, isValidCidr as cr, isValidIp as cs, isValidIpv4 as ct, marginToMarkup as cu, markupToMargin as cv, octalToPermissions as cw, parseFileSize as cx, parseInput as cy, parseNumberString as cz, type AnnuityStructure as d, type AprApyDirection as e, type AprApyResult as f, type AspectRatioResult as g, BASE_PREFIXES as h, BYTE_UNITS as i, type BarcodeFormat as j, type BarcodeValidationResult as k, type BaseConvertResult as l, type BlendedLoanRateResult as m, type BreakEvenInput as n, type BreakEvenResult as o, type ByteConvertResult as p, type ByteUnit as q, COMMON_LOCALES as r, COMMON_PERMISSIONS as s, COMMON_RATIOS as t, units as u, COMMON_SIZES as v, COMMON_TAX_RATES as w, COMMON_TIP_PERCENTAGES as x, COMMON_VIEWPORTS as y, type CardValidationResult as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@utilix-tech/sdk",
3
- "version": "0.90.0",
3
+ "version": "0.91.0",
4
4
  "description": "730 developer utility functions for Node.js: JSON, encoding, hashing, color, CSS, network and more. Runs locally, no API key required.",
5
5
  "author": "Utilix <hello@utilix.tech>",
6
6
  "license": "MIT",