@utilix-tech/sdk 0.13.0 → 0.15.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.
@@ -1100,6 +1100,115 @@ function calculateTax(amount, ratePercent, direction) {
1100
1100
  const taxAmount = round22(grossAmount - netAmount);
1101
1101
  return { netAmount, taxAmount, grossAmount, ratePercent, direction };
1102
1102
  }
1103
+ function calculateCompoundInterest(principal, annualRatePercent, years, compoundsPerYear, contributionPerPeriod = 0) {
1104
+ if (!Number.isFinite(principal) || principal < 0) return { error: "Principal must be zero or a positive number" };
1105
+ if (!Number.isFinite(annualRatePercent) || annualRatePercent < 0) {
1106
+ return { error: "Annual interest rate must be zero or a positive number" };
1107
+ }
1108
+ if (!Number.isInteger(years) || years <= 0) return { error: "Years must be a positive whole number" };
1109
+ if (!Number.isInteger(compoundsPerYear) || compoundsPerYear <= 0) {
1110
+ return { error: "Compounding frequency must be a positive whole number of periods per year" };
1111
+ }
1112
+ if (!Number.isFinite(contributionPerPeriod) || contributionPerPeriod < 0) {
1113
+ return { error: "Contribution per period must be zero or a positive number" };
1114
+ }
1115
+ if (principal === 0 && contributionPerPeriod === 0) return { error: "Enter a principal or a recurring contribution" };
1116
+ const round22 = (n) => Math.round(n * 100) / 100;
1117
+ const ratePerPeriod = annualRatePercent / 100 / compoundsPerYear;
1118
+ function futureValueAtPeriod(periods) {
1119
+ const growth = ratePerPeriod === 0 ? 1 : Math.pow(1 + ratePerPeriod, periods);
1120
+ const fvPrincipal = principal * growth;
1121
+ const fvContributions = contributionPerPeriod === 0 ? 0 : ratePerPeriod === 0 ? contributionPerPeriod * periods : contributionPerPeriod * ((growth - 1) / ratePerPeriod);
1122
+ return fvPrincipal + fvContributions;
1123
+ }
1124
+ const schedule = [];
1125
+ for (let year = 1; year <= years; year++) {
1126
+ const periods = year * compoundsPerYear;
1127
+ const balance = round22(futureValueAtPeriod(periods));
1128
+ const contributions = round22(contributionPerPeriod * periods);
1129
+ schedule.push({ year, balance, contributions, interest: round22(balance - principal - contributions) });
1130
+ }
1131
+ const totalPeriods = years * compoundsPerYear;
1132
+ const futureValue = round22(futureValueAtPeriod(totalPeriods));
1133
+ const totalContributions = round22(contributionPerPeriod * totalPeriods);
1134
+ const totalInterest = round22(futureValue - principal - totalContributions);
1135
+ return {
1136
+ futureValue,
1137
+ totalPrincipal: round22(principal),
1138
+ totalContributions,
1139
+ totalInterest,
1140
+ years,
1141
+ compoundsPerYear,
1142
+ schedule
1143
+ };
1144
+ }
1145
+ function computeIsbn10CheckDigit(dataDigits) {
1146
+ let sum = 0;
1147
+ for (let i = 0; i < 9; i++) sum += dataDigits[i] * (10 - i);
1148
+ const check = (11 - sum % 11) % 11;
1149
+ return check === 10 ? "X" : String(check);
1150
+ }
1151
+ function computeIsbn13CheckDigit(dataDigits) {
1152
+ let sum = 0;
1153
+ const n = dataDigits.length;
1154
+ for (let i = 0; i < n; i++) {
1155
+ const distanceFromEnd = n - 1 - i;
1156
+ const weight = distanceFromEnd % 2 === 0 ? 3 : 1;
1157
+ sum += dataDigits[i] * weight;
1158
+ }
1159
+ return String((10 - sum % 10) % 10);
1160
+ }
1161
+ function validateIsbn(input) {
1162
+ if (!input || !input.trim()) return { error: "Input is empty" };
1163
+ const cleaned = input.replace(/[\s-]/g, "").toUpperCase();
1164
+ if (cleaned.length === 10) {
1165
+ if (!/^\d{9}[\dX]$/.test(cleaned)) {
1166
+ return { error: 'ISBN-10 must be 9 digits followed by a digit or "X" check digit' };
1167
+ }
1168
+ const dataDigits = cleaned.slice(0, 9).split("").map(Number);
1169
+ const checkDigit = cleaned[9];
1170
+ const expectedCheckDigit = computeIsbn10CheckDigit(dataDigits);
1171
+ const valid = checkDigit === expectedCheckDigit;
1172
+ const isbn13Digits = [9, 7, 8, ...dataDigits];
1173
+ const isbn13Check = computeIsbn13CheckDigit(isbn13Digits);
1174
+ const converted = valid ? isbn13Digits.join("") + isbn13Check : null;
1175
+ return { valid, format: "ISBN-10", digits: cleaned, checkDigit, expectedCheckDigit, converted };
1176
+ }
1177
+ if (cleaned.length === 13) {
1178
+ if (!/^\d{13}$/.test(cleaned)) return { error: "ISBN-13 must contain only digits" };
1179
+ const dataDigits = cleaned.slice(0, 12).split("").map(Number);
1180
+ const checkDigit = cleaned[12];
1181
+ const expectedCheckDigit = computeIsbn13CheckDigit(dataDigits);
1182
+ const valid = checkDigit === expectedCheckDigit;
1183
+ let converted = null;
1184
+ if (valid && cleaned.startsWith("978")) {
1185
+ const isbn10Digits = dataDigits.slice(3);
1186
+ converted = isbn10Digits.join("") + computeIsbn10CheckDigit(isbn10Digits);
1187
+ }
1188
+ return { valid, format: "ISBN-13", digits: cleaned, checkDigit, expectedCheckDigit, converted };
1189
+ }
1190
+ return { error: `Unsupported length (${cleaned.length} characters); expected 10 (ISBN-10) or 13 (ISBN-13)` };
1191
+ }
1192
+ var COMMON_TIP_PERCENTAGES = [10, 15, 18, 20, 25];
1193
+ function calculateTipSplit(billAmount, tipPercent, numPeople = 1) {
1194
+ if (!Number.isFinite(billAmount) || billAmount < 0) return { error: "Bill amount must be zero or a positive number" };
1195
+ if (!Number.isFinite(tipPercent) || tipPercent < 0) return { error: "Tip percent must be zero or a positive number" };
1196
+ if (!Number.isInteger(numPeople) || numPeople < 1) return { error: "Number of people must be a positive whole number" };
1197
+ const round22 = (n) => Math.round(n * 100) / 100;
1198
+ const billRounded = round22(billAmount);
1199
+ const tipAmount = round22(billAmount * (tipPercent / 100));
1200
+ const totalAmount = round22(billRounded + tipAmount);
1201
+ return {
1202
+ billAmount: billRounded,
1203
+ tipPercent,
1204
+ tipAmount,
1205
+ totalAmount,
1206
+ numPeople,
1207
+ perPersonBill: round22(billRounded / numPeople),
1208
+ perPersonTip: round22(tipAmount / numPeople),
1209
+ perPersonTotal: round22(totalAmount / numPeople)
1210
+ };
1211
+ }
1103
1212
 
1104
1213
  exports.BASE_LABELS = BASE_LABELS;
1105
1214
  exports.BASE_PREFIXES = BASE_PREFIXES;
@@ -1110,13 +1219,16 @@ exports.COMMON_PERMISSIONS = COMMON_PERMISSIONS;
1110
1219
  exports.COMMON_RATIOS = COMMON_RATIOS;
1111
1220
  exports.COMMON_SIZES = COMMON_SIZES;
1112
1221
  exports.COMMON_TAX_RATES = COMMON_TAX_RATES;
1222
+ exports.COMMON_TIP_PERCENTAGES = COMMON_TIP_PERCENTAGES;
1113
1223
  exports.COMMON_VIEWPORTS = COMMON_VIEWPORTS;
1114
1224
  exports.autoFormat = autoFormat;
1115
1225
  exports.bumpVersion = bumpVersion;
1116
1226
  exports.calcAspectRatio = calcAspectRatio;
1117
1227
  exports.calcSubnet = calcSubnet;
1228
+ exports.calculateCompoundInterest = calculateCompoundInterest;
1118
1229
  exports.calculateLoan = calculateLoan;
1119
1230
  exports.calculateTax = calculateTax;
1231
+ exports.calculateTipSplit = calculateTipSplit;
1120
1232
  exports.compareSemver = compareSemver;
1121
1233
  exports.convert = convert;
1122
1234
  exports.convertBytes = convertBytes;
@@ -1164,4 +1276,5 @@ exports.symbolicToPermissions = symbolicToPermissions;
1164
1276
  exports.validateBarcode = validateBarcode;
1165
1277
  exports.validateCardNumber = validateCardNumber;
1166
1278
  exports.validateIban = validateIban;
1279
+ exports.validateIsbn = validateIsbn;
1167
1280
  exports.viewportToPx = viewportToPx;
@@ -1 +1 @@
1
- export { A as AmortizationRow, a as AspectRatioResult, B as BASE_LABELS, b as BASE_PREFIXES, c as BYTE_UNITS, d as BarcodeFormat, e as BarcodeValidationResult, f as BaseConvertResult, g as ByteConvertResult, h as ByteUnit, C as COMMON_CURRENCIES, i as COMMON_LOCALES, j as COMMON_PERMISSIONS, k as COMMON_RATIOS, l as COMMON_SIZES, m as COMMON_TAX_RATES, n as COMMON_VIEWPORTS, o as CardValidationResult, D as Dimensions, F as FilePermissions, p as FormatOptions, I as IbanValidationResult, q as IpConversion, L as LoanResult, N as NotationStyle, r as NumberBase, P as Permission, s as PxConvertResult, S as SemverVersion, t as SubnetInfo, T as TaxDirection, v as TaxResult, V as ViewportConvertResult, w as autoFormat, x as bumpVersion, y as calcAspectRatio, z as calcSubnet, E as calculateLoan, G as calculateTax, H as compareSemver, J as convert, K as convertBytes, M as convertIp, O as coverBox, Q as decimalToIp, R as decimalToIpCidr, U as describePermissions, W as fitIntoBox, X as formatNumber, Y as formatValue, Z as formatVwValue, _ as formatWithSeparator, $ as gcd, a0 as ipFromBinary, a1 as ipFromDecimal, a2 as ipFromHex, a3 as ipToBinary, a4 as ipToDecimal, a5 as ipToDecimalCidr, a6 as ipToHex, a7 as ipToOctal, a8 as isValid, a9 as isValidCidr, aa as isValidIp, ab as isValidIpv4, ac as octalToPermissions, ad as parseFileSize, ae as parseInput, af as parseNumberString, ag as parseSemver, ah as permissionsToChmod, ai as permissionsToOctal, aj as permissionsToSymbolic, ak as ptToPx, al as pxToAll, am as pxToViewport, an as remToPx, ao as satisfiesRange, ap as scaleByHeight, aq as scaleByWidth, ar as sortVersions, as as splitSubnet, at as symbolicToPermissions, au as validateBarcode, av as validateCardNumber, aw as validateIban, ax as viewportToPx } from '../units-CKS5W_ih.cjs';
1
+ export { A as AmortizationRow, a as AspectRatioResult, B as BASE_LABELS, b as BASE_PREFIXES, c as BYTE_UNITS, d as BarcodeFormat, e as BarcodeValidationResult, f as BaseConvertResult, g as ByteConvertResult, h as ByteUnit, C as COMMON_CURRENCIES, i as COMMON_LOCALES, j as COMMON_PERMISSIONS, k as COMMON_RATIOS, l as COMMON_SIZES, m as COMMON_TAX_RATES, n as COMMON_TIP_PERCENTAGES, o as COMMON_VIEWPORTS, p as CardValidationResult, q as CompoundInterestResult, r as CompoundYearRow, D as Dimensions, F as FilePermissions, s as FormatOptions, I as IbanValidationResult, t as IpConversion, v as IsbnFormat, w as IsbnResult, L as LoanResult, N as NotationStyle, x as NumberBase, P as Permission, y as PxConvertResult, S as SemverVersion, z as SubnetInfo, T as TaxDirection, E as TaxResult, G as TipSplitResult, V as ViewportConvertResult, H as autoFormat, J as bumpVersion, K as calcAspectRatio, M as calcSubnet, O as calculateCompoundInterest, Q as calculateLoan, R as calculateTax, U as calculateTipSplit, W as compareSemver, X as convert, Y as convertBytes, Z as convertIp, _ as coverBox, $ as decimalToIp, a0 as decimalToIpCidr, a1 as describePermissions, a2 as fitIntoBox, a3 as formatNumber, a4 as formatValue, a5 as formatVwValue, a6 as formatWithSeparator, a7 as gcd, a8 as ipFromBinary, a9 as ipFromDecimal, aa as ipFromHex, ab as ipToBinary, ac as ipToDecimal, ad as ipToDecimalCidr, ae as ipToHex, af as ipToOctal, ag as isValid, ah as isValidCidr, ai as isValidIp, aj as isValidIpv4, ak as octalToPermissions, al as parseFileSize, am as parseInput, an as parseNumberString, ao as parseSemver, ap as permissionsToChmod, aq as permissionsToOctal, ar as permissionsToSymbolic, as as ptToPx, at as pxToAll, au as pxToViewport, av as remToPx, aw as satisfiesRange, ax as scaleByHeight, ay as scaleByWidth, az as sortVersions, aA as splitSubnet, aB as symbolicToPermissions, aC as validateBarcode, aD as validateCardNumber, aE as validateIban, aF as validateIsbn, aG as viewportToPx } from '../units-CADUCiYZ.cjs';
@@ -1 +1 @@
1
- export { A as AmortizationRow, a as AspectRatioResult, B as BASE_LABELS, b as BASE_PREFIXES, c as BYTE_UNITS, d as BarcodeFormat, e as BarcodeValidationResult, f as BaseConvertResult, g as ByteConvertResult, h as ByteUnit, C as COMMON_CURRENCIES, i as COMMON_LOCALES, j as COMMON_PERMISSIONS, k as COMMON_RATIOS, l as COMMON_SIZES, m as COMMON_TAX_RATES, n as COMMON_VIEWPORTS, o as CardValidationResult, D as Dimensions, F as FilePermissions, p as FormatOptions, I as IbanValidationResult, q as IpConversion, L as LoanResult, N as NotationStyle, r as NumberBase, P as Permission, s as PxConvertResult, S as SemverVersion, t as SubnetInfo, T as TaxDirection, v as TaxResult, V as ViewportConvertResult, w as autoFormat, x as bumpVersion, y as calcAspectRatio, z as calcSubnet, E as calculateLoan, G as calculateTax, H as compareSemver, J as convert, K as convertBytes, M as convertIp, O as coverBox, Q as decimalToIp, R as decimalToIpCidr, U as describePermissions, W as fitIntoBox, X as formatNumber, Y as formatValue, Z as formatVwValue, _ as formatWithSeparator, $ as gcd, a0 as ipFromBinary, a1 as ipFromDecimal, a2 as ipFromHex, a3 as ipToBinary, a4 as ipToDecimal, a5 as ipToDecimalCidr, a6 as ipToHex, a7 as ipToOctal, a8 as isValid, a9 as isValidCidr, aa as isValidIp, ab as isValidIpv4, ac as octalToPermissions, ad as parseFileSize, ae as parseInput, af as parseNumberString, ag as parseSemver, ah as permissionsToChmod, ai as permissionsToOctal, aj as permissionsToSymbolic, ak as ptToPx, al as pxToAll, am as pxToViewport, an as remToPx, ao as satisfiesRange, ap as scaleByHeight, aq as scaleByWidth, ar as sortVersions, as as splitSubnet, at as symbolicToPermissions, au as validateBarcode, av as validateCardNumber, aw as validateIban, ax as viewportToPx } from '../units-CKS5W_ih.js';
1
+ export { A as AmortizationRow, a as AspectRatioResult, B as BASE_LABELS, b as BASE_PREFIXES, c as BYTE_UNITS, d as BarcodeFormat, e as BarcodeValidationResult, f as BaseConvertResult, g as ByteConvertResult, h as ByteUnit, C as COMMON_CURRENCIES, i as COMMON_LOCALES, j as COMMON_PERMISSIONS, k as COMMON_RATIOS, l as COMMON_SIZES, m as COMMON_TAX_RATES, n as COMMON_TIP_PERCENTAGES, o as COMMON_VIEWPORTS, p as CardValidationResult, q as CompoundInterestResult, r as CompoundYearRow, D as Dimensions, F as FilePermissions, s as FormatOptions, I as IbanValidationResult, t as IpConversion, v as IsbnFormat, w as IsbnResult, L as LoanResult, N as NotationStyle, x as NumberBase, P as Permission, y as PxConvertResult, S as SemverVersion, z as SubnetInfo, T as TaxDirection, E as TaxResult, G as TipSplitResult, V as ViewportConvertResult, H as autoFormat, J as bumpVersion, K as calcAspectRatio, M as calcSubnet, O as calculateCompoundInterest, Q as calculateLoan, R as calculateTax, U as calculateTipSplit, W as compareSemver, X as convert, Y as convertBytes, Z as convertIp, _ as coverBox, $ as decimalToIp, a0 as decimalToIpCidr, a1 as describePermissions, a2 as fitIntoBox, a3 as formatNumber, a4 as formatValue, a5 as formatVwValue, a6 as formatWithSeparator, a7 as gcd, a8 as ipFromBinary, a9 as ipFromDecimal, aa as ipFromHex, ab as ipToBinary, ac as ipToDecimal, ad as ipToDecimalCidr, ae as ipToHex, af as ipToOctal, ag as isValid, ah as isValidCidr, ai as isValidIp, aj as isValidIpv4, ak as octalToPermissions, al as parseFileSize, am as parseInput, an as parseNumberString, ao as parseSemver, ap as permissionsToChmod, aq as permissionsToOctal, ar as permissionsToSymbolic, as as ptToPx, at as pxToAll, au as pxToViewport, av as remToPx, aw as satisfiesRange, ax as scaleByHeight, ay as scaleByWidth, az as sortVersions, aA as splitSubnet, aB as symbolicToPermissions, aC as validateBarcode, aD as validateCardNumber, aE as validateIban, aF as validateIsbn, aG as viewportToPx } from '../units-CADUCiYZ.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_VIEWPORTS, autoFormat, bumpVersion, calcAspectRatio, calcSubnet, calculateLoan, calculateTax, compareSemver, convert, convertBytes, convertIp, coverBox, decimalToIp, decimalToIpCidr, describePermissions, fitIntoBox, formatNumber, formatValue, formatVwValue, formatWithSeparator, gcd, ipFromBinary, ipFromDecimal, ipFromHex, ipToBinary, ipToDecimal, ipToDecimalCidr, ipToHex, ipToOctal, isValid, isValidCidr, isValidIp, isValidIpv4, octalToPermissions, parseFileSize, parseInput, parseNumberString, parseSemver, permissionsToChmod, permissionsToOctal, permissionsToSymbolic, ptToPx, pxToAll, pxToViewport, remToPx, satisfiesRange, scaleByHeight, scaleByWidth, sortVersions, splitSubnet, symbolicToPermissions, validateBarcode, validateCardNumber, validateIban, viewportToPx } from '../chunk-BI3SOWM7.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, autoFormat, bumpVersion, calcAspectRatio, calcSubnet, calculateCompoundInterest, calculateLoan, calculateTax, calculateTipSplit, compareSemver, convert, convertBytes, convertIp, coverBox, decimalToIp, decimalToIpCidr, describePermissions, fitIntoBox, formatNumber, formatValue, formatVwValue, formatWithSeparator, gcd, ipFromBinary, ipFromDecimal, ipFromHex, ipToBinary, ipToDecimal, ipToDecimalCidr, ipToHex, ipToOctal, isValid, isValidCidr, isValidIp, isValidIpv4, octalToPermissions, parseFileSize, parseInput, parseNumberString, parseSemver, permissionsToChmod, permissionsToOctal, permissionsToSymbolic, ptToPx, pxToAll, pxToViewport, remToPx, satisfiesRange, scaleByHeight, scaleByWidth, sortVersions, splitSubnet, symbolicToPermissions, validateBarcode, validateCardNumber, validateIban, validateIsbn, viewportToPx } from '../chunk-RJPYVCKQ.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -15,6 +15,11 @@
15
15
  * - credit-card-validator : validateCardNumber
16
16
  * - iban-validator : validateIban
17
17
  * - loan-calculator : calculateLoan
18
+ * - barcode-validator : validateBarcode
19
+ * - vat-calculator : calculateTax
20
+ * - compound-interest-calculator : calculateCompoundInterest
21
+ * - isbn-validator : validateIsbn
22
+ * - tip-calculator : calculateTipSplit
18
23
  */
19
24
  interface PxConvertResult {
20
25
  px: number;
@@ -318,6 +323,70 @@ declare const COMMON_TAX_RATES: Array<{
318
323
  declare function calculateTax(amount: number, ratePercent: number, direction: TaxDirection): TaxResult | {
319
324
  error: string;
320
325
  };
326
+ interface CompoundYearRow {
327
+ year: number;
328
+ balance: number;
329
+ contributions: number;
330
+ interest: number;
331
+ }
332
+ interface CompoundInterestResult {
333
+ futureValue: number;
334
+ totalPrincipal: number;
335
+ totalContributions: number;
336
+ totalInterest: number;
337
+ years: number;
338
+ compoundsPerYear: number;
339
+ schedule: CompoundYearRow[];
340
+ }
341
+ /**
342
+ * Compute the future value of a principal (plus an optional recurring
343
+ * contribution made at the end of each compounding period) under compound
344
+ * interest, given an annual interest rate (as a percent, e.g. 5), a term in
345
+ * years, and a compounding frequency (periods per year, e.g. 1 = annually,
346
+ * 12 = monthly, 365 = daily).
347
+ */
348
+ declare function calculateCompoundInterest(principal: number, annualRatePercent: number, years: number, compoundsPerYear: number, contributionPerPeriod?: number): CompoundInterestResult | {
349
+ error: string;
350
+ };
351
+ type IsbnFormat = "ISBN-10" | "ISBN-13";
352
+ interface IsbnResult {
353
+ valid: boolean;
354
+ format: IsbnFormat;
355
+ digits: string;
356
+ checkDigit: string;
357
+ expectedCheckDigit: string;
358
+ converted: string | null;
359
+ }
360
+ /**
361
+ * Validate an ISBN-10 or ISBN-13 number via its checksum, inferred from the
362
+ * character count (10 or 13) once spaces and hyphens are stripped, and
363
+ * convert it to the other format where possible: ISBN-10 always converts to
364
+ * ISBN-13 by prefixing "978" and recomputing the check digit, but an
365
+ * ISBN-13 only converts back to ISBN-10 if it starts with the "978" prefix.
366
+ */
367
+ declare function validateIsbn(input: string): IsbnResult | {
368
+ error: string;
369
+ };
370
+ interface TipSplitResult {
371
+ billAmount: number;
372
+ tipPercent: number;
373
+ tipAmount: number;
374
+ totalAmount: number;
375
+ numPeople: number;
376
+ perPersonBill: number;
377
+ perPersonTip: number;
378
+ perPersonTotal: number;
379
+ }
380
+ /** Common tip percentages shown as quick-select buttons in the UI. */
381
+ declare const COMMON_TIP_PERCENTAGES: number[];
382
+ /**
383
+ * Compute a tip on a bill amount and split the bill, tip, and total evenly
384
+ * across a number of people. Pure arithmetic over user-supplied numbers, no
385
+ * live rate feed and no uneven per-item splitting.
386
+ */
387
+ declare function calculateTipSplit(billAmount: number, tipPercent: number, numPeople?: number): TipSplitResult | {
388
+ error: string;
389
+ };
321
390
 
322
391
  type units_AmortizationRow = AmortizationRow;
323
392
  type units_AspectRatioResult = AspectRatioResult;
@@ -335,13 +404,18 @@ declare const units_COMMON_PERMISSIONS: typeof COMMON_PERMISSIONS;
335
404
  declare const units_COMMON_RATIOS: typeof COMMON_RATIOS;
336
405
  declare const units_COMMON_SIZES: typeof COMMON_SIZES;
337
406
  declare const units_COMMON_TAX_RATES: typeof COMMON_TAX_RATES;
407
+ declare const units_COMMON_TIP_PERCENTAGES: typeof COMMON_TIP_PERCENTAGES;
338
408
  declare const units_COMMON_VIEWPORTS: typeof COMMON_VIEWPORTS;
339
409
  type units_CardValidationResult = CardValidationResult;
410
+ type units_CompoundInterestResult = CompoundInterestResult;
411
+ type units_CompoundYearRow = CompoundYearRow;
340
412
  type units_Dimensions = Dimensions;
341
413
  type units_FilePermissions = FilePermissions;
342
414
  type units_FormatOptions = FormatOptions;
343
415
  type units_IbanValidationResult = IbanValidationResult;
344
416
  type units_IpConversion = IpConversion;
417
+ type units_IsbnFormat = IsbnFormat;
418
+ type units_IsbnResult = IsbnResult;
345
419
  type units_LoanResult = LoanResult;
346
420
  type units_NotationStyle = NotationStyle;
347
421
  type units_NumberBase = NumberBase;
@@ -351,13 +425,16 @@ type units_SemverVersion = SemverVersion;
351
425
  type units_SubnetInfo = SubnetInfo;
352
426
  type units_TaxDirection = TaxDirection;
353
427
  type units_TaxResult = TaxResult;
428
+ type units_TipSplitResult = TipSplitResult;
354
429
  type units_ViewportConvertResult = ViewportConvertResult;
355
430
  declare const units_autoFormat: typeof autoFormat;
356
431
  declare const units_bumpVersion: typeof bumpVersion;
357
432
  declare const units_calcAspectRatio: typeof calcAspectRatio;
358
433
  declare const units_calcSubnet: typeof calcSubnet;
434
+ declare const units_calculateCompoundInterest: typeof calculateCompoundInterest;
359
435
  declare const units_calculateLoan: typeof calculateLoan;
360
436
  declare const units_calculateTax: typeof calculateTax;
437
+ declare const units_calculateTipSplit: typeof calculateTipSplit;
361
438
  declare const units_compareSemver: typeof compareSemver;
362
439
  declare const units_convert: typeof convert;
363
440
  declare const units_convertBytes: typeof convertBytes;
@@ -405,9 +482,10 @@ declare const units_symbolicToPermissions: typeof symbolicToPermissions;
405
482
  declare const units_validateBarcode: typeof validateBarcode;
406
483
  declare const units_validateCardNumber: typeof validateCardNumber;
407
484
  declare const units_validateIban: typeof validateIban;
485
+ declare const units_validateIsbn: typeof validateIsbn;
408
486
  declare const units_viewportToPx: typeof viewportToPx;
409
487
  declare namespace units {
410
- export { type units_AmortizationRow as AmortizationRow, 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_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_VIEWPORTS as COMMON_VIEWPORTS, type units_CardValidationResult as CardValidationResult, type units_Dimensions as Dimensions, type units_FilePermissions as FilePermissions, type units_FormatOptions as FormatOptions, type units_IbanValidationResult as IbanValidationResult, type units_IpConversion as IpConversion, type units_LoanResult as LoanResult, type units_NotationStyle as NotationStyle, type units_NumberBase as NumberBase, type units_Permission as Permission, type units_PxConvertResult as PxConvertResult, type units_SemverVersion as SemverVersion, type units_SubnetInfo as SubnetInfo, type units_TaxDirection as TaxDirection, type units_TaxResult as TaxResult, type units_ViewportConvertResult as ViewportConvertResult, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, units_calculateLoan as calculateLoan, units_calculateTax as calculateTax, units_compareSemver as compareSemver, units_convert as convert, 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_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_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_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_viewportToPx as viewportToPx };
488
+ export { type units_AmortizationRow as AmortizationRow, 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_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_CompoundInterestResult as CompoundInterestResult, type units_CompoundYearRow as CompoundYearRow, type units_Dimensions as Dimensions, type units_FilePermissions as FilePermissions, type units_FormatOptions as FormatOptions, type units_IbanValidationResult as IbanValidationResult, type units_IpConversion as IpConversion, type units_IsbnFormat as IsbnFormat, type units_IsbnResult as IsbnResult, type units_LoanResult as LoanResult, type units_NotationStyle as NotationStyle, type units_NumberBase as NumberBase, type units_Permission as Permission, type units_PxConvertResult as PxConvertResult, type units_SemverVersion as SemverVersion, type units_SubnetInfo as SubnetInfo, type units_TaxDirection as TaxDirection, type units_TaxResult as TaxResult, type units_TipSplitResult as TipSplitResult, type units_ViewportConvertResult as ViewportConvertResult, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, units_calculateCompoundInterest as calculateCompoundInterest, units_calculateLoan as calculateLoan, units_calculateTax as calculateTax, units_calculateTipSplit as calculateTipSplit, units_compareSemver as compareSemver, units_convert as convert, 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_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_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_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_viewportToPx as viewportToPx };
411
489
  }
412
490
 
413
- export { gcd as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type Dimensions as D, calculateLoan as E, type FilePermissions as F, calculateTax as G, compareSemver as H, type IbanValidationResult as I, convert as J, convertBytes as K, type LoanResult as L, convertIp as M, type NotationStyle as N, coverBox as O, type Permission as P, decimalToIp as Q, decimalToIpCidr as R, type SemverVersion as S, type TaxDirection as T, describePermissions as U, type ViewportConvertResult as V, fitIntoBox as W, formatNumber as X, formatValue as Y, formatVwValue as Z, formatWithSeparator as _, type AspectRatioResult as a, ipFromBinary as a0, ipFromDecimal as a1, ipFromHex as a2, ipToBinary as a3, ipToDecimal as a4, ipToDecimalCidr as a5, ipToHex as a6, ipToOctal as a7, isValid as a8, isValidCidr as a9, isValidIp as aa, isValidIpv4 as ab, octalToPermissions as ac, parseFileSize as ad, parseInput as ae, parseNumberString as af, parseSemver as ag, permissionsToChmod as ah, permissionsToOctal as ai, permissionsToSymbolic as aj, ptToPx as ak, pxToAll as al, pxToViewport as am, remToPx as an, satisfiesRange as ao, scaleByHeight as ap, scaleByWidth as aq, sortVersions as ar, splitSubnet as as, symbolicToPermissions as at, validateBarcode as au, validateCardNumber as av, validateIban as aw, viewportToPx as ax, BASE_PREFIXES as b, BYTE_UNITS as c, type BarcodeFormat as d, type BarcodeValidationResult as e, type BaseConvertResult as f, type ByteConvertResult as g, type ByteUnit as h, COMMON_LOCALES as i, COMMON_PERMISSIONS as j, COMMON_RATIOS as k, COMMON_SIZES as l, COMMON_TAX_RATES as m, COMMON_VIEWPORTS as n, type CardValidationResult as o, type FormatOptions as p, type IpConversion as q, type NumberBase as r, type PxConvertResult as s, type SubnetInfo as t, units as u, type TaxResult as v, autoFormat as w, bumpVersion as x, calcAspectRatio as y, calcSubnet as z };
491
+ export { decimalToIp as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type Dimensions as D, type TaxResult as E, type FilePermissions as F, type TipSplitResult as G, autoFormat as H, type IbanValidationResult as I, bumpVersion as J, calcAspectRatio as K, type LoanResult as L, calcSubnet as M, type NotationStyle as N, calculateCompoundInterest as O, type Permission as P, calculateLoan as Q, calculateTax as R, type SemverVersion as S, type TaxDirection as T, calculateTipSplit as U, type ViewportConvertResult as V, compareSemver as W, convert as X, convertBytes as Y, convertIp as Z, coverBox as _, type AspectRatioResult as a, decimalToIpCidr as a0, describePermissions as a1, fitIntoBox as a2, formatNumber as a3, formatValue as a4, formatVwValue as a5, formatWithSeparator as a6, gcd as a7, ipFromBinary as a8, ipFromDecimal as a9, splitSubnet as aA, symbolicToPermissions as aB, validateBarcode as aC, validateCardNumber as aD, validateIban as aE, validateIsbn as aF, viewportToPx as aG, ipFromHex as aa, ipToBinary as ab, ipToDecimal as ac, ipToDecimalCidr as ad, ipToHex as ae, ipToOctal as af, isValid as ag, isValidCidr as ah, isValidIp as ai, isValidIpv4 as aj, octalToPermissions as ak, parseFileSize as al, parseInput as am, parseNumberString as an, parseSemver as ao, permissionsToChmod as ap, permissionsToOctal as aq, permissionsToSymbolic as ar, ptToPx as as, pxToAll as at, pxToViewport as au, remToPx as av, satisfiesRange as aw, scaleByHeight as ax, scaleByWidth as ay, sortVersions as az, BASE_PREFIXES as b, BYTE_UNITS as c, type BarcodeFormat as d, type BarcodeValidationResult as e, type BaseConvertResult as f, type ByteConvertResult as g, type ByteUnit as h, COMMON_LOCALES as i, COMMON_PERMISSIONS as j, COMMON_RATIOS as k, COMMON_SIZES as l, COMMON_TAX_RATES as m, COMMON_TIP_PERCENTAGES as n, COMMON_VIEWPORTS as o, type CardValidationResult as p, type CompoundInterestResult as q, type CompoundYearRow as r, type FormatOptions as s, type IpConversion as t, units as u, type IsbnFormat as v, type IsbnResult as w, type NumberBase as x, type PxConvertResult as y, type SubnetInfo as z };
@@ -15,6 +15,11 @@
15
15
  * - credit-card-validator : validateCardNumber
16
16
  * - iban-validator : validateIban
17
17
  * - loan-calculator : calculateLoan
18
+ * - barcode-validator : validateBarcode
19
+ * - vat-calculator : calculateTax
20
+ * - compound-interest-calculator : calculateCompoundInterest
21
+ * - isbn-validator : validateIsbn
22
+ * - tip-calculator : calculateTipSplit
18
23
  */
19
24
  interface PxConvertResult {
20
25
  px: number;
@@ -318,6 +323,70 @@ declare const COMMON_TAX_RATES: Array<{
318
323
  declare function calculateTax(amount: number, ratePercent: number, direction: TaxDirection): TaxResult | {
319
324
  error: string;
320
325
  };
326
+ interface CompoundYearRow {
327
+ year: number;
328
+ balance: number;
329
+ contributions: number;
330
+ interest: number;
331
+ }
332
+ interface CompoundInterestResult {
333
+ futureValue: number;
334
+ totalPrincipal: number;
335
+ totalContributions: number;
336
+ totalInterest: number;
337
+ years: number;
338
+ compoundsPerYear: number;
339
+ schedule: CompoundYearRow[];
340
+ }
341
+ /**
342
+ * Compute the future value of a principal (plus an optional recurring
343
+ * contribution made at the end of each compounding period) under compound
344
+ * interest, given an annual interest rate (as a percent, e.g. 5), a term in
345
+ * years, and a compounding frequency (periods per year, e.g. 1 = annually,
346
+ * 12 = monthly, 365 = daily).
347
+ */
348
+ declare function calculateCompoundInterest(principal: number, annualRatePercent: number, years: number, compoundsPerYear: number, contributionPerPeriod?: number): CompoundInterestResult | {
349
+ error: string;
350
+ };
351
+ type IsbnFormat = "ISBN-10" | "ISBN-13";
352
+ interface IsbnResult {
353
+ valid: boolean;
354
+ format: IsbnFormat;
355
+ digits: string;
356
+ checkDigit: string;
357
+ expectedCheckDigit: string;
358
+ converted: string | null;
359
+ }
360
+ /**
361
+ * Validate an ISBN-10 or ISBN-13 number via its checksum, inferred from the
362
+ * character count (10 or 13) once spaces and hyphens are stripped, and
363
+ * convert it to the other format where possible: ISBN-10 always converts to
364
+ * ISBN-13 by prefixing "978" and recomputing the check digit, but an
365
+ * ISBN-13 only converts back to ISBN-10 if it starts with the "978" prefix.
366
+ */
367
+ declare function validateIsbn(input: string): IsbnResult | {
368
+ error: string;
369
+ };
370
+ interface TipSplitResult {
371
+ billAmount: number;
372
+ tipPercent: number;
373
+ tipAmount: number;
374
+ totalAmount: number;
375
+ numPeople: number;
376
+ perPersonBill: number;
377
+ perPersonTip: number;
378
+ perPersonTotal: number;
379
+ }
380
+ /** Common tip percentages shown as quick-select buttons in the UI. */
381
+ declare const COMMON_TIP_PERCENTAGES: number[];
382
+ /**
383
+ * Compute a tip on a bill amount and split the bill, tip, and total evenly
384
+ * across a number of people. Pure arithmetic over user-supplied numbers, no
385
+ * live rate feed and no uneven per-item splitting.
386
+ */
387
+ declare function calculateTipSplit(billAmount: number, tipPercent: number, numPeople?: number): TipSplitResult | {
388
+ error: string;
389
+ };
321
390
 
322
391
  type units_AmortizationRow = AmortizationRow;
323
392
  type units_AspectRatioResult = AspectRatioResult;
@@ -335,13 +404,18 @@ declare const units_COMMON_PERMISSIONS: typeof COMMON_PERMISSIONS;
335
404
  declare const units_COMMON_RATIOS: typeof COMMON_RATIOS;
336
405
  declare const units_COMMON_SIZES: typeof COMMON_SIZES;
337
406
  declare const units_COMMON_TAX_RATES: typeof COMMON_TAX_RATES;
407
+ declare const units_COMMON_TIP_PERCENTAGES: typeof COMMON_TIP_PERCENTAGES;
338
408
  declare const units_COMMON_VIEWPORTS: typeof COMMON_VIEWPORTS;
339
409
  type units_CardValidationResult = CardValidationResult;
410
+ type units_CompoundInterestResult = CompoundInterestResult;
411
+ type units_CompoundYearRow = CompoundYearRow;
340
412
  type units_Dimensions = Dimensions;
341
413
  type units_FilePermissions = FilePermissions;
342
414
  type units_FormatOptions = FormatOptions;
343
415
  type units_IbanValidationResult = IbanValidationResult;
344
416
  type units_IpConversion = IpConversion;
417
+ type units_IsbnFormat = IsbnFormat;
418
+ type units_IsbnResult = IsbnResult;
345
419
  type units_LoanResult = LoanResult;
346
420
  type units_NotationStyle = NotationStyle;
347
421
  type units_NumberBase = NumberBase;
@@ -351,13 +425,16 @@ type units_SemverVersion = SemverVersion;
351
425
  type units_SubnetInfo = SubnetInfo;
352
426
  type units_TaxDirection = TaxDirection;
353
427
  type units_TaxResult = TaxResult;
428
+ type units_TipSplitResult = TipSplitResult;
354
429
  type units_ViewportConvertResult = ViewportConvertResult;
355
430
  declare const units_autoFormat: typeof autoFormat;
356
431
  declare const units_bumpVersion: typeof bumpVersion;
357
432
  declare const units_calcAspectRatio: typeof calcAspectRatio;
358
433
  declare const units_calcSubnet: typeof calcSubnet;
434
+ declare const units_calculateCompoundInterest: typeof calculateCompoundInterest;
359
435
  declare const units_calculateLoan: typeof calculateLoan;
360
436
  declare const units_calculateTax: typeof calculateTax;
437
+ declare const units_calculateTipSplit: typeof calculateTipSplit;
361
438
  declare const units_compareSemver: typeof compareSemver;
362
439
  declare const units_convert: typeof convert;
363
440
  declare const units_convertBytes: typeof convertBytes;
@@ -405,9 +482,10 @@ declare const units_symbolicToPermissions: typeof symbolicToPermissions;
405
482
  declare const units_validateBarcode: typeof validateBarcode;
406
483
  declare const units_validateCardNumber: typeof validateCardNumber;
407
484
  declare const units_validateIban: typeof validateIban;
485
+ declare const units_validateIsbn: typeof validateIsbn;
408
486
  declare const units_viewportToPx: typeof viewportToPx;
409
487
  declare namespace units {
410
- export { type units_AmortizationRow as AmortizationRow, 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_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_VIEWPORTS as COMMON_VIEWPORTS, type units_CardValidationResult as CardValidationResult, type units_Dimensions as Dimensions, type units_FilePermissions as FilePermissions, type units_FormatOptions as FormatOptions, type units_IbanValidationResult as IbanValidationResult, type units_IpConversion as IpConversion, type units_LoanResult as LoanResult, type units_NotationStyle as NotationStyle, type units_NumberBase as NumberBase, type units_Permission as Permission, type units_PxConvertResult as PxConvertResult, type units_SemverVersion as SemverVersion, type units_SubnetInfo as SubnetInfo, type units_TaxDirection as TaxDirection, type units_TaxResult as TaxResult, type units_ViewportConvertResult as ViewportConvertResult, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, units_calculateLoan as calculateLoan, units_calculateTax as calculateTax, units_compareSemver as compareSemver, units_convert as convert, 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_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_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_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_viewportToPx as viewportToPx };
488
+ export { type units_AmortizationRow as AmortizationRow, 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_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_CompoundInterestResult as CompoundInterestResult, type units_CompoundYearRow as CompoundYearRow, type units_Dimensions as Dimensions, type units_FilePermissions as FilePermissions, type units_FormatOptions as FormatOptions, type units_IbanValidationResult as IbanValidationResult, type units_IpConversion as IpConversion, type units_IsbnFormat as IsbnFormat, type units_IsbnResult as IsbnResult, type units_LoanResult as LoanResult, type units_NotationStyle as NotationStyle, type units_NumberBase as NumberBase, type units_Permission as Permission, type units_PxConvertResult as PxConvertResult, type units_SemverVersion as SemverVersion, type units_SubnetInfo as SubnetInfo, type units_TaxDirection as TaxDirection, type units_TaxResult as TaxResult, type units_TipSplitResult as TipSplitResult, type units_ViewportConvertResult as ViewportConvertResult, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, units_calculateCompoundInterest as calculateCompoundInterest, units_calculateLoan as calculateLoan, units_calculateTax as calculateTax, units_calculateTipSplit as calculateTipSplit, units_compareSemver as compareSemver, units_convert as convert, 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_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_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_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_viewportToPx as viewportToPx };
411
489
  }
412
490
 
413
- export { gcd as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type Dimensions as D, calculateLoan as E, type FilePermissions as F, calculateTax as G, compareSemver as H, type IbanValidationResult as I, convert as J, convertBytes as K, type LoanResult as L, convertIp as M, type NotationStyle as N, coverBox as O, type Permission as P, decimalToIp as Q, decimalToIpCidr as R, type SemverVersion as S, type TaxDirection as T, describePermissions as U, type ViewportConvertResult as V, fitIntoBox as W, formatNumber as X, formatValue as Y, formatVwValue as Z, formatWithSeparator as _, type AspectRatioResult as a, ipFromBinary as a0, ipFromDecimal as a1, ipFromHex as a2, ipToBinary as a3, ipToDecimal as a4, ipToDecimalCidr as a5, ipToHex as a6, ipToOctal as a7, isValid as a8, isValidCidr as a9, isValidIp as aa, isValidIpv4 as ab, octalToPermissions as ac, parseFileSize as ad, parseInput as ae, parseNumberString as af, parseSemver as ag, permissionsToChmod as ah, permissionsToOctal as ai, permissionsToSymbolic as aj, ptToPx as ak, pxToAll as al, pxToViewport as am, remToPx as an, satisfiesRange as ao, scaleByHeight as ap, scaleByWidth as aq, sortVersions as ar, splitSubnet as as, symbolicToPermissions as at, validateBarcode as au, validateCardNumber as av, validateIban as aw, viewportToPx as ax, BASE_PREFIXES as b, BYTE_UNITS as c, type BarcodeFormat as d, type BarcodeValidationResult as e, type BaseConvertResult as f, type ByteConvertResult as g, type ByteUnit as h, COMMON_LOCALES as i, COMMON_PERMISSIONS as j, COMMON_RATIOS as k, COMMON_SIZES as l, COMMON_TAX_RATES as m, COMMON_VIEWPORTS as n, type CardValidationResult as o, type FormatOptions as p, type IpConversion as q, type NumberBase as r, type PxConvertResult as s, type SubnetInfo as t, units as u, type TaxResult as v, autoFormat as w, bumpVersion as x, calcAspectRatio as y, calcSubnet as z };
491
+ export { decimalToIp as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type Dimensions as D, type TaxResult as E, type FilePermissions as F, type TipSplitResult as G, autoFormat as H, type IbanValidationResult as I, bumpVersion as J, calcAspectRatio as K, type LoanResult as L, calcSubnet as M, type NotationStyle as N, calculateCompoundInterest as O, type Permission as P, calculateLoan as Q, calculateTax as R, type SemverVersion as S, type TaxDirection as T, calculateTipSplit as U, type ViewportConvertResult as V, compareSemver as W, convert as X, convertBytes as Y, convertIp as Z, coverBox as _, type AspectRatioResult as a, decimalToIpCidr as a0, describePermissions as a1, fitIntoBox as a2, formatNumber as a3, formatValue as a4, formatVwValue as a5, formatWithSeparator as a6, gcd as a7, ipFromBinary as a8, ipFromDecimal as a9, splitSubnet as aA, symbolicToPermissions as aB, validateBarcode as aC, validateCardNumber as aD, validateIban as aE, validateIsbn as aF, viewportToPx as aG, ipFromHex as aa, ipToBinary as ab, ipToDecimal as ac, ipToDecimalCidr as ad, ipToHex as ae, ipToOctal as af, isValid as ag, isValidCidr as ah, isValidIp as ai, isValidIpv4 as aj, octalToPermissions as ak, parseFileSize as al, parseInput as am, parseNumberString as an, parseSemver as ao, permissionsToChmod as ap, permissionsToOctal as aq, permissionsToSymbolic as ar, ptToPx as as, pxToAll as at, pxToViewport as au, remToPx as av, satisfiesRange as aw, scaleByHeight as ax, scaleByWidth as ay, sortVersions as az, BASE_PREFIXES as b, BYTE_UNITS as c, type BarcodeFormat as d, type BarcodeValidationResult as e, type BaseConvertResult as f, type ByteConvertResult as g, type ByteUnit as h, COMMON_LOCALES as i, COMMON_PERMISSIONS as j, COMMON_RATIOS as k, COMMON_SIZES as l, COMMON_TAX_RATES as m, COMMON_TIP_PERCENTAGES as n, COMMON_VIEWPORTS as o, type CardValidationResult as p, type CompoundInterestResult as q, type CompoundYearRow as r, type FormatOptions as s, type IpConversion as t, units as u, type IsbnFormat as v, type IsbnResult as w, type NumberBase as x, type PxConvertResult as y, type SubnetInfo as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@utilix-tech/sdk",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "description": "154+ developer utility tools 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",