@utilix-tech/sdk 0.59.0 → 0.60.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.60.0
6
+ - Add `buildRetryAfterHeader`, `parseRetryAfterHeader` (retry-after-builder): build an HTTP Retry-After response header from a delay in seconds or a target date, or parse an existing one, per RFC 9110.
7
+ - Add `calculateFreelancerRate` (freelancer-rate-calculator): solve for the minimum hourly rate a freelancer must charge to hit a target annual income, given billable hours, weeks worked, overhead, and a profit margin.
8
+
5
9
  ## 0.59.0
6
10
  - Add `buildPreferHeader`, `parsePreferHeader` (prefer-header): build an HTTP Prefer request-header value from preferences with optional values and parameters per RFC 7240, or parse an existing one into the same shape.
7
11
  - Add `dedupeNdjson` (ndjson-dedup): remove duplicate records from NDJSON input, either by exact structural equality or by a chosen key field, keeping the first occurrence of each duplicate.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @utilix-tech/sdk
2
2
 
3
- **662 developer utility functions for Node.js: runs locally, no API key required.**
3
+ **665 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)
@@ -343,7 +343,7 @@ formatIso8601Duration(90061); // { iso: "P1DT1H1M1S", ... }
343
343
  ### `/units`: Conversions
344
344
 
345
345
  ```ts
346
- 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 } from "@utilix-tech/sdk/units";
346
+ 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 } from "@utilix-tech/sdk/units";
347
347
 
348
348
  // File sizes
349
349
  convertBytes(1073741824, "GB"); // 1
@@ -485,6 +485,10 @@ calculateCreditUtilization([{ label: "Visa", balance: 500, limit: 5000 }, { labe
485
485
  // Debt-to-income (DTI) ratio, plus a qualitative tier matching common mortgage-lending guidance
486
486
  calculateDebtToIncomeRatio([{ label: "Rent", amount: 1500 }, { label: "Car loan", amount: 400 }], 5000);
487
487
  // { dtiPercent: 38, tier: "moderate", totalMonthlyDebt: 1900, grossMonthlyIncome: 5000, debts: [...] }
488
+
489
+ // Minimum hourly rate to hit a target annual income, given billable hours, weeks worked, overhead, and margin
490
+ calculateFreelancerRate({ targetAnnualIncome: 80000, billableHoursPerWeek: 25, weeksPerYear: 48 });
491
+ // { hourlyRate: 66.67, dailyRate: 533.33, requiredAnnualRevenue: 80000, annualBillableHours: 1200, monthlyRevenueTarget: 6666.67 }
488
492
  ```
489
493
 
490
494
  ---
@@ -501,7 +505,8 @@ import { getStatusCode, isValidIp, isValidIpv4, isValidIpv6,
501
505
  buildContentDisposition, parseContentDisposition,
502
506
  buildXContentTypeOptionsHeader, parseXContentTypeOptionsHeader, assessContentTypeRisk,
503
507
  buildAcceptLanguage, parseAcceptLanguage,
504
- buildPreferHeader, parsePreferHeader } from "@utilix-tech/sdk/network";
508
+ buildPreferHeader, parsePreferHeader,
509
+ buildRetryAfterHeader, parseRetryAfterHeader } from "@utilix-tech/sdk/network";
505
510
 
506
511
  getStatusCode(404);
507
512
  // { code: 404, text: "Not Found", description: "...", category: "Client Error" }
@@ -626,6 +631,14 @@ buildPreferHeader([{ token: "respond-async" }, { token: "wait", value: "100" }])
626
631
  // Parse an existing Prefer header value into the same shape
627
632
  parsePreferHeader("return=minimal;handling=lenient");
628
633
  // { header: "Prefer: return=minimal;handling=lenient", headerValue: "return=minimal;handling=lenient", preferences: [...] }
634
+
635
+ // Build a Retry-After response header from a delay in seconds or a target date, per RFC 9110
636
+ buildRetryAfterHeader({ seconds: 120 });
637
+ // { header: "Retry-After: 120", headerValue: "120", type: "seconds", seconds: 120 }
638
+
639
+ // Parse an existing Retry-After header value into the same shape
640
+ parseRetryAfterHeader("Retry-After: 120");
641
+ // { header: "Retry-After: 120", headerValue: "120", type: "seconds", seconds: 120 }
629
642
  ```
630
643
 
631
644
  ---
@@ -884,8 +897,8 @@ inspectGifFrames(new Uint8Array(gifBytes));
884
897
  | `@utilix-tech/sdk/data` | CSV, YAML, TOML, XML, INI, NDJSON parse and convert, NDJSON record deduplicator, SRT/WebVTT subtitles, Markdown front matter parser, YAML anchor/alias resolver, CSV column type inferencer |
885
898
  | `@utilix-tech/sdk/generators` | UUID v4/v7, ULID, passwords, strength check, entropy estimator, fake data, CSP nonce generator |
886
899
  | `@utilix-tech/sdk/time` | Date diff, timezone convert, cron parse, relative time |
887
- | `@utilix-tech/sdk/units` | Bytes, CSS px/rem, number bases, currency format, credit card/IBAN/barcode/ISBN validation, loan calculator, EMI calculator, compound/simple interest calculators, VAT/sales tax calculator, tip/bill split calculator, break-even point calculator, Rule of 72 calculator, savings goal calculator, ROI calculator, cash denomination/till calculator, payback period calculator, CD maturity calculator, debt-to-income ratio calculator |
888
- | `@utilix-tech/sdk/network` | HTTP status codes, IP validation, country flags, geolocation URLs, HAR file parsing, User-Agent parsing, IPv6 address compress/expand, Permissions-Policy header builder, Client Hints header builder/parser, Content-Disposition header builder/parser, X-Content-Type-Options header builder/risk assessor, sitemap.xml validator, sitemap index splitter, Prefer header builder/parser (RFC 7240) |
900
+ | `@utilix-tech/sdk/units` | Bytes, CSS px/rem, number bases, currency format, credit card/IBAN/barcode/ISBN validation, loan calculator, EMI calculator, compound/simple interest calculators, VAT/sales tax calculator, tip/bill split calculator, break-even point calculator, Rule of 72 calculator, savings goal calculator, ROI calculator, cash denomination/till calculator, payback period calculator, CD maturity calculator, debt-to-income ratio calculator, freelancer hourly rate calculator |
901
+ | `@utilix-tech/sdk/network` | HTTP status codes, IP validation, country flags, geolocation URLs, HAR file parsing, User-Agent parsing, IPv6 address compress/expand, Permissions-Policy header builder, Client Hints header builder/parser, Content-Disposition header builder/parser, X-Content-Type-Options header builder/risk assessor, sitemap.xml validator, sitemap index splitter, Prefer header builder/parser (RFC 7240), Retry-After header builder/parser (RFC 9110) |
889
902
  | `@utilix-tech/sdk/api` | cURL build/parse, JWT decode/sign, JWKS parse, CORS headers, CSP header |
890
903
  | `@utilix-tech/sdk/code` | SQL format/minify, HTML format/minify, regex tester, GraphQL format, MIME type lookup, GitHub URL parsing, regex ReDoS detector, Conventional Commits linter, package.json exports field validator |
891
904
  | `@utilix-tech/sdk/color` | Hex/RGB/HSL/HSV/CMYK convert, palette generation, contrast check |
@@ -25,6 +25,7 @@ __export(network_exports, {
25
25
  buildPreferHeader: () => buildPreferHeader,
26
26
  buildRangeHeader: () => buildRangeHeader,
27
27
  buildReferrerPolicy: () => buildReferrerPolicy,
28
+ buildRetryAfterHeader: () => buildRetryAfterHeader,
28
29
  buildVaryHeader: () => buildVaryHeader,
29
30
  buildXContentTypeOptionsHeader: () => buildXContentTypeOptionsHeader,
30
31
  checkSetCookieHeader: () => checkSetCookieHeader,
@@ -52,6 +53,7 @@ __export(network_exports, {
52
53
  parseIpv6Address: () => parseIpv6Address,
53
54
  parsePermissionsPolicy: () => parsePermissionsPolicy,
54
55
  parsePreferHeader: () => parsePreferHeader,
56
+ parseRetryAfterHeader: () => parseRetryAfterHeader,
55
57
  parseUserAgent: () => parseUserAgent,
56
58
  parseVaryHeader: () => parseVaryHeader,
57
59
  parseXContentTypeOptionsHeader: () => parseXContentTypeOptionsHeader,
@@ -2985,5 +2987,37 @@ function parsePreferHeader(raw) {
2985
2987
  const headerValue = formatPreferPreferences(preferences);
2986
2988
  return { header: `Prefer: ${headerValue}`, headerValue, preferences };
2987
2989
  }
2990
+ function buildRetryAfterHeader(input) {
2991
+ const { seconds, date } = input;
2992
+ const hasSeconds = seconds !== void 0;
2993
+ const hasDate = date !== void 0 && date !== "";
2994
+ if (hasSeconds && hasDate) return { error: "Provide either seconds or date, not both" };
2995
+ if (!hasSeconds && !hasDate) return { error: "seconds or date is required" };
2996
+ if (hasSeconds) {
2997
+ if (typeof seconds !== "number" || !Number.isFinite(seconds) || !Number.isInteger(seconds) || seconds < 0) {
2998
+ return { error: "seconds must be a non-negative integer" };
2999
+ }
3000
+ return { header: `Retry-After: ${seconds}`, headerValue: String(seconds), type: "seconds", seconds };
3001
+ }
3002
+ const parsed = new Date(date);
3003
+ if (Number.isNaN(parsed.getTime())) return { error: "date must be a valid date/time string" };
3004
+ const httpDate = parsed.toUTCString();
3005
+ return { header: `Retry-After: ${httpDate}`, headerValue: httpDate, type: "http-date", httpDate, iso: parsed.toISOString() };
3006
+ }
3007
+ function parseRetryAfterHeader(raw) {
3008
+ if (!raw || raw.trim() === "") return { error: "Input is empty" };
3009
+ const value = raw.trim().replace(/^retry-after:\s*/i, "").trim();
3010
+ if (value === "") return { error: "Input is empty" };
3011
+ if (/^\d+$/.test(value)) {
3012
+ const seconds = parseInt(value, 10);
3013
+ return { header: `Retry-After: ${seconds}`, headerValue: String(seconds), type: "seconds", seconds };
3014
+ }
3015
+ const parsed = new Date(value);
3016
+ if (Number.isNaN(parsed.getTime())) {
3017
+ return { error: "Value is neither a non-negative integer (seconds) nor a valid HTTP-date" };
3018
+ }
3019
+ const httpDate = parsed.toUTCString();
3020
+ return { header: `Retry-After: ${httpDate}`, headerValue: httpDate, type: "http-date", httpDate, iso: parsed.toISOString() };
3021
+ }
2988
3022
 
2989
- export { CLIENT_HINTS, DNS_RECORD_TYPES, HTTP_HEADERS, LINK_REL_VALUES, PERMISSIONS_POLICY_FEATURES, REFERRER_POLICY_VALUES, STATUS_CODES, X_CONTENT_TYPE_OPTIONS_HEADER, analyzeEmailHeaders, assessContentTypeRisk, buildAcceptLanguage, buildCacheControl, buildClientHints, buildContentDisposition, buildDnsQueryUrl, buildGeoUrl, buildLinkHeader, buildMapUrl, buildPermissionsPolicy, buildPreferHeader, buildRangeHeader, buildReferrerPolicy, buildVaryHeader, buildXContentTypeOptionsHeader, checkSetCookieHeader, countryCodeToFlag, formatCoordinates, formatTtl, getByCategory, getHeader, getHeadersByCategory, getStatusByCategory, getStatusCode, isClientError, isServerError, isSuccess, isValidIp, isValidIpv4, isValidIpv6, network_exports, parseAcceptLanguage, parseClientHintHeaders, parseContentDisposition, parseContentRangeHeader, parseDnsResponse, parseGeoResponse, parseHar, parseIpv6Address, parsePermissionsPolicy, parsePreferHeader, parseUserAgent, parseVaryHeader, parseXContentTypeOptionsHeader, searchHeaders, searchStatusCodes, splitSitemap, statusCodeToText, typeNumberToLabel, validateDomain, validateHeaderName, validateHeaderValue, validateManifest, validateRobotsTxt, validateSitemap };
3023
+ export { CLIENT_HINTS, DNS_RECORD_TYPES, HTTP_HEADERS, LINK_REL_VALUES, PERMISSIONS_POLICY_FEATURES, REFERRER_POLICY_VALUES, STATUS_CODES, X_CONTENT_TYPE_OPTIONS_HEADER, analyzeEmailHeaders, assessContentTypeRisk, buildAcceptLanguage, buildCacheControl, buildClientHints, buildContentDisposition, buildDnsQueryUrl, buildGeoUrl, buildLinkHeader, buildMapUrl, buildPermissionsPolicy, buildPreferHeader, buildRangeHeader, buildReferrerPolicy, buildRetryAfterHeader, buildVaryHeader, buildXContentTypeOptionsHeader, checkSetCookieHeader, countryCodeToFlag, formatCoordinates, formatTtl, getByCategory, getHeader, getHeadersByCategory, getStatusByCategory, getStatusCode, isClientError, isServerError, isSuccess, isValidIp, isValidIpv4, isValidIpv6, network_exports, parseAcceptLanguage, parseClientHintHeaders, parseContentDisposition, parseContentRangeHeader, parseDnsResponse, parseGeoResponse, parseHar, parseIpv6Address, parsePermissionsPolicy, parsePreferHeader, parseRetryAfterHeader, parseUserAgent, parseVaryHeader, parseXContentTypeOptionsHeader, searchHeaders, searchStatusCodes, splitSitemap, statusCodeToText, typeNumberToLabel, validateDomain, validateHeaderName, validateHeaderValue, validateManifest, validateRobotsTxt, validateSitemap };
@@ -33,6 +33,7 @@ __export(units_exports, {
33
33
  calculateDepreciationSchedule: () => calculateDepreciationSchedule,
34
34
  calculateDiscount: () => calculateDiscount,
35
35
  calculateEmi: () => calculateEmi,
36
+ calculateFreelancerRate: () => calculateFreelancerRate,
36
37
  calculateGpa: () => calculateGpa,
37
38
  calculateLoan: () => calculateLoan,
38
39
  calculateMarginMarkup: () => calculateMarginMarkup,
@@ -2311,5 +2312,40 @@ function calculateBlendedLoanRate(loans) {
2311
2312
  totalAnnualInterest: round22(totalMonthlyInterest * 12)
2312
2313
  };
2313
2314
  }
2315
+ function calculateFreelancerRate(input) {
2316
+ const { targetAnnualIncome, billableHoursPerWeek, weeksPerYear } = input;
2317
+ const annualOverheadCosts = input.annualOverheadCosts ?? 0;
2318
+ const profitMarginPercent = input.profitMarginPercent ?? 0;
2319
+ if (!Number.isFinite(targetAnnualIncome) || targetAnnualIncome < 0) {
2320
+ return { error: "targetAnnualIncome must be a finite, non-negative number" };
2321
+ }
2322
+ if (!Number.isFinite(billableHoursPerWeek) || billableHoursPerWeek <= 0 || billableHoursPerWeek > 168) {
2323
+ return { error: "billableHoursPerWeek must be a finite number greater than zero and at most 168" };
2324
+ }
2325
+ if (!Number.isFinite(weeksPerYear) || weeksPerYear <= 0 || weeksPerYear > 52) {
2326
+ return { error: "weeksPerYear must be a finite number greater than zero and at most 52" };
2327
+ }
2328
+ if (!Number.isFinite(annualOverheadCosts) || annualOverheadCosts < 0) {
2329
+ return { error: "annualOverheadCosts must be a finite, non-negative number" };
2330
+ }
2331
+ if (!Number.isFinite(profitMarginPercent) || profitMarginPercent < 0) {
2332
+ return { error: "profitMarginPercent must be a finite, non-negative number" };
2333
+ }
2334
+ const round22 = (n) => Math.round(n * 100) / 100;
2335
+ const annualBillableHours = billableHoursPerWeek * weeksPerYear;
2336
+ const baseRevenueNeeded = targetAnnualIncome + annualOverheadCosts;
2337
+ const requiredAnnualRevenue = baseRevenueNeeded * (1 + profitMarginPercent / 100);
2338
+ const hourlyRate = requiredAnnualRevenue / annualBillableHours;
2339
+ return {
2340
+ targetAnnualIncome: round22(targetAnnualIncome),
2341
+ annualOverheadCosts: round22(annualOverheadCosts),
2342
+ profitMarginPercent: round22(profitMarginPercent),
2343
+ annualBillableHours: round22(annualBillableHours),
2344
+ requiredAnnualRevenue: round22(requiredAnnualRevenue),
2345
+ hourlyRate: round22(hourlyRate),
2346
+ dailyRate: round22(hourlyRate * 8),
2347
+ monthlyRevenueTarget: round22(requiredAnnualRevenue / 12)
2348
+ };
2349
+ }
2314
2350
 
2315
- 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, calculateBlendedLoanRate, calculateBreakEven, calculateCashBreakdown, calculateCashRounding, calculateCdMaturity, calculateChange, calculateCompoundInterest, calculateCreditUtilization, calculateDebtToIncomeRatio, calculateDepreciationSchedule, calculateDiscount, calculateEmi, calculateGpa, calculateLoan, calculateMarginMarkup, calculateMovingAverages, calculatePaybackPeriod, calculatePercentageChange, calculateRoi, calculateRuleOf72, calculateSavingsGoal, calculateSimpleInterest, calculateTax, calculateTimeValue, calculateTipSplit, calculateVideoBitrate, compareSemver, compareUnitPrices, convert, convertAprApy, convertBytes, convertIp, coverBox, decimalToIp, decimalToIpCidr, describePermissions, fitIntoBox, formatNumber, formatValue, formatVwValue, formatWithSeparator, gcd, ipFromBinary, ipFromDecimal, ipFromHex, ipToBinary, ipToDecimal, ipToDecimalCidr, ipToHex, ipToOctal, isValid, isValidCidr, isValidIp, isValidIpv4, marginToMarkup, markupToMargin, octalToPermissions, parseFileSize, parseInput, parseNumberString, parseSemver, permissionsToChmod, permissionsToOctal, permissionsToSymbolic, ptToPx, pxToAll, pxToViewport, remToPx, satisfiesRange, scaleByHeight, scaleByWidth, sortVersions, splitSubnet, symbolicToPermissions, units_exports, validateBarcode, validateCardNumber, validateIban, validateIsbn, viewportToPx };
2351
+ 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, calculateBlendedLoanRate, calculateBreakEven, calculateCashBreakdown, calculateCashRounding, calculateCdMaturity, calculateChange, calculateCompoundInterest, calculateCreditUtilization, calculateDebtToIncomeRatio, calculateDepreciationSchedule, calculateDiscount, calculateEmi, calculateFreelancerRate, calculateGpa, calculateLoan, calculateMarginMarkup, calculateMovingAverages, calculatePaybackPeriod, calculatePercentageChange, calculateRoi, calculateRuleOf72, calculateSavingsGoal, calculateSimpleInterest, calculateTax, calculateTimeValue, calculateTipSplit, calculateVideoBitrate, compareSemver, compareUnitPrices, convert, convertAprApy, convertBytes, convertIp, coverBox, decimalToIp, decimalToIpCidr, describePermissions, fitIntoBox, formatNumber, formatValue, formatVwValue, formatWithSeparator, gcd, ipFromBinary, ipFromDecimal, ipFromHex, ipToBinary, ipToDecimal, ipToDecimalCidr, ipToHex, ipToOctal, isValid, isValidCidr, isValidIp, isValidIpv4, marginToMarkup, markupToMargin, octalToPermissions, parseFileSize, parseInput, parseNumberString, parseSemver, permissionsToChmod, permissionsToOctal, permissionsToSymbolic, ptToPx, pxToAll, pxToViewport, remToPx, satisfiesRange, scaleByHeight, scaleByWidth, sortVersions, splitSubnet, symbolicToPermissions, units_exports, validateBarcode, validateCardNumber, validateIban, validateIsbn, viewportToPx };
package/dist/index.cjs CHANGED
@@ -8431,6 +8431,7 @@ __export(units_exports, {
8431
8431
  calculateDepreciationSchedule: () => calculateDepreciationSchedule,
8432
8432
  calculateDiscount: () => calculateDiscount,
8433
8433
  calculateEmi: () => calculateEmi,
8434
+ calculateFreelancerRate: () => calculateFreelancerRate,
8434
8435
  calculateGpa: () => calculateGpa,
8435
8436
  calculateLoan: () => calculateLoan,
8436
8437
  calculateMarginMarkup: () => calculateMarginMarkup,
@@ -10709,6 +10710,41 @@ function calculateBlendedLoanRate(loans) {
10709
10710
  totalAnnualInterest: round23(totalMonthlyInterest * 12)
10710
10711
  };
10711
10712
  }
10713
+ function calculateFreelancerRate(input) {
10714
+ const { targetAnnualIncome, billableHoursPerWeek, weeksPerYear } = input;
10715
+ const annualOverheadCosts = input.annualOverheadCosts ?? 0;
10716
+ const profitMarginPercent = input.profitMarginPercent ?? 0;
10717
+ if (!Number.isFinite(targetAnnualIncome) || targetAnnualIncome < 0) {
10718
+ return { error: "targetAnnualIncome must be a finite, non-negative number" };
10719
+ }
10720
+ if (!Number.isFinite(billableHoursPerWeek) || billableHoursPerWeek <= 0 || billableHoursPerWeek > 168) {
10721
+ return { error: "billableHoursPerWeek must be a finite number greater than zero and at most 168" };
10722
+ }
10723
+ if (!Number.isFinite(weeksPerYear) || weeksPerYear <= 0 || weeksPerYear > 52) {
10724
+ return { error: "weeksPerYear must be a finite number greater than zero and at most 52" };
10725
+ }
10726
+ if (!Number.isFinite(annualOverheadCosts) || annualOverheadCosts < 0) {
10727
+ return { error: "annualOverheadCosts must be a finite, non-negative number" };
10728
+ }
10729
+ if (!Number.isFinite(profitMarginPercent) || profitMarginPercent < 0) {
10730
+ return { error: "profitMarginPercent must be a finite, non-negative number" };
10731
+ }
10732
+ const round23 = (n) => Math.round(n * 100) / 100;
10733
+ const annualBillableHours = billableHoursPerWeek * weeksPerYear;
10734
+ const baseRevenueNeeded = targetAnnualIncome + annualOverheadCosts;
10735
+ const requiredAnnualRevenue = baseRevenueNeeded * (1 + profitMarginPercent / 100);
10736
+ const hourlyRate = requiredAnnualRevenue / annualBillableHours;
10737
+ return {
10738
+ targetAnnualIncome: round23(targetAnnualIncome),
10739
+ annualOverheadCosts: round23(annualOverheadCosts),
10740
+ profitMarginPercent: round23(profitMarginPercent),
10741
+ annualBillableHours: round23(annualBillableHours),
10742
+ requiredAnnualRevenue: round23(requiredAnnualRevenue),
10743
+ hourlyRate: round23(hourlyRate),
10744
+ dailyRate: round23(hourlyRate * 8),
10745
+ monthlyRevenueTarget: round23(requiredAnnualRevenue / 12)
10746
+ };
10747
+ }
10712
10748
 
10713
10749
  // src/tools/network.ts
10714
10750
  var network_exports = {};
@@ -10735,6 +10771,7 @@ __export(network_exports, {
10735
10771
  buildPreferHeader: () => buildPreferHeader,
10736
10772
  buildRangeHeader: () => buildRangeHeader,
10737
10773
  buildReferrerPolicy: () => buildReferrerPolicy,
10774
+ buildRetryAfterHeader: () => buildRetryAfterHeader,
10738
10775
  buildVaryHeader: () => buildVaryHeader,
10739
10776
  buildXContentTypeOptionsHeader: () => buildXContentTypeOptionsHeader,
10740
10777
  checkSetCookieHeader: () => checkSetCookieHeader,
@@ -10762,6 +10799,7 @@ __export(network_exports, {
10762
10799
  parseIpv6Address: () => parseIpv6Address,
10763
10800
  parsePermissionsPolicy: () => parsePermissionsPolicy,
10764
10801
  parsePreferHeader: () => parsePreferHeader,
10802
+ parseRetryAfterHeader: () => parseRetryAfterHeader,
10765
10803
  parseUserAgent: () => parseUserAgent,
10766
10804
  parseVaryHeader: () => parseVaryHeader,
10767
10805
  parseXContentTypeOptionsHeader: () => parseXContentTypeOptionsHeader,
@@ -13695,6 +13733,38 @@ function parsePreferHeader(raw) {
13695
13733
  const headerValue = formatPreferPreferences(preferences);
13696
13734
  return { header: `Prefer: ${headerValue}`, headerValue, preferences };
13697
13735
  }
13736
+ function buildRetryAfterHeader(input) {
13737
+ const { seconds, date } = input;
13738
+ const hasSeconds = seconds !== void 0;
13739
+ const hasDate = date !== void 0 && date !== "";
13740
+ if (hasSeconds && hasDate) return { error: "Provide either seconds or date, not both" };
13741
+ if (!hasSeconds && !hasDate) return { error: "seconds or date is required" };
13742
+ if (hasSeconds) {
13743
+ if (typeof seconds !== "number" || !Number.isFinite(seconds) || !Number.isInteger(seconds) || seconds < 0) {
13744
+ return { error: "seconds must be a non-negative integer" };
13745
+ }
13746
+ return { header: `Retry-After: ${seconds}`, headerValue: String(seconds), type: "seconds", seconds };
13747
+ }
13748
+ const parsed = new Date(date);
13749
+ if (Number.isNaN(parsed.getTime())) return { error: "date must be a valid date/time string" };
13750
+ const httpDate = parsed.toUTCString();
13751
+ return { header: `Retry-After: ${httpDate}`, headerValue: httpDate, type: "http-date", httpDate, iso: parsed.toISOString() };
13752
+ }
13753
+ function parseRetryAfterHeader(raw) {
13754
+ if (!raw || raw.trim() === "") return { error: "Input is empty" };
13755
+ const value = raw.trim().replace(/^retry-after:\s*/i, "").trim();
13756
+ if (value === "") return { error: "Input is empty" };
13757
+ if (/^\d+$/.test(value)) {
13758
+ const seconds = parseInt(value, 10);
13759
+ return { header: `Retry-After: ${seconds}`, headerValue: String(seconds), type: "seconds", seconds };
13760
+ }
13761
+ const parsed = new Date(value);
13762
+ if (Number.isNaN(parsed.getTime())) {
13763
+ return { error: "Value is neither a non-negative integer (seconds) nor a valid HTTP-date" };
13764
+ }
13765
+ const httpDate = parsed.toUTCString();
13766
+ return { header: `Retry-After: ${httpDate}`, headerValue: httpDate, type: "http-date", httpDate, iso: parsed.toISOString() };
13767
+ }
13698
13768
 
13699
13769
  // src/tools/api.ts
13700
13770
  var api_exports = {};
package/dist/index.d.cts CHANGED
@@ -5,8 +5,8 @@ export { t as text } from './text-DWUcY8H1.cjs';
5
5
  export { d as data } from './data-vxXrBlWh.cjs';
6
6
  export { g as generators } from './generators-DAXXrMvG.cjs';
7
7
  export { t as time } from './time-KqJjdqII.cjs';
8
- export { u as units } from './units-BM9GkUZW.cjs';
9
- export { n as network } from './network-fDfM1_L6.cjs';
8
+ export { u as units } from './units-ClKR6Jxz.cjs';
9
+ export { n as network } from './network-CXt69chQ.cjs';
10
10
  export { a as api } from './api-DmTNE4c1.cjs';
11
11
  export { c as code } from './code-rxidGgvB.cjs';
12
12
  export { c as color } from './color-tPwZCr9H.cjs';
package/dist/index.d.ts CHANGED
@@ -5,8 +5,8 @@ export { t as text } from './text-DWUcY8H1.js';
5
5
  export { d as data } from './data-vxXrBlWh.js';
6
6
  export { g as generators } from './generators-DAXXrMvG.js';
7
7
  export { t as time } from './time-KqJjdqII.js';
8
- export { u as units } from './units-BM9GkUZW.js';
9
- export { n as network } from './network-fDfM1_L6.js';
8
+ export { u as units } from './units-ClKR6Jxz.js';
9
+ export { n as network } from './network-CXt69chQ.js';
10
10
  export { a as api } from './api-DmTNE4c1.js';
11
11
  export { c as code } from './code-rxidGgvB.js';
12
12
  export { c as color } from './color-tPwZCr9H.js';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { media_exports as media } from './chunk-226EH3ZI.js';
2
- export { units_exports as units } from './chunk-MRIGQRTU.js';
3
- export { network_exports as network } from './chunk-3QU46YFP.js';
2
+ export { units_exports as units } from './chunk-B7366PQJ.js';
3
+ export { network_exports as network } from './chunk-2WT347WO.js';
4
4
  export { api_exports as api } from './chunk-52ZDKSIX.js';
5
5
  export { code_exports as code } from './chunk-JW4NG2GN.js';
6
6
  export { color_exports as color } from './chunk-BPVAB4P2.js';
@@ -24,6 +24,7 @@
24
24
  * - x-content-type-options-builder: buildXContentTypeOptionsHeader, parseXContentTypeOptionsHeader, assessContentTypeRisk
25
25
  * - accept-language-parser: parseAcceptLanguage, buildAcceptLanguage
26
26
  * - prefer-header: buildPreferHeader, parsePreferHeader
27
+ * - retry-after-builder: buildRetryAfterHeader, parseRetryAfterHeader
27
28
  */
28
29
  declare const DNS_RECORD_TYPES: readonly ["A", "AAAA", "CNAME", "MX", "TXT", "NS", "SOA", "PTR", "SRV", "CAA"];
29
30
  type DnsRecordType = typeof DNS_RECORD_TYPES[number];
@@ -812,6 +813,40 @@ declare function buildPreferHeader(preferences: {
812
813
  declare function parsePreferHeader(raw: string): PreferResult | {
813
814
  error: string;
814
815
  };
816
+ interface RetryAfterSecondsResult {
817
+ header: string;
818
+ headerValue: string;
819
+ type: 'seconds';
820
+ seconds: number;
821
+ }
822
+ interface RetryAfterDateResult {
823
+ header: string;
824
+ headerValue: string;
825
+ type: 'http-date';
826
+ httpDate: string;
827
+ iso: string;
828
+ }
829
+ type RetryAfterResult = RetryAfterSecondsResult | RetryAfterDateResult;
830
+ /**
831
+ * Build a `Retry-After` response header value from either a non-negative
832
+ * delay in seconds or a target date/time, per RFC 9110 §10.2.3. A date is
833
+ * formatted as an HTTP-date (IMF-fixdate, e.g. "Wed, 21 Oct 2026 07:28:00
834
+ * GMT"), the only date format the header allows.
835
+ */
836
+ declare function buildRetryAfterHeader(input: {
837
+ seconds?: number;
838
+ date?: string;
839
+ }): RetryAfterResult | {
840
+ error: string;
841
+ };
842
+ /**
843
+ * Parse an existing `Retry-After` header value (with or without a leading
844
+ * `Retry-After:` label) into either its delay-in-seconds form or its
845
+ * HTTP-date form, per RFC 9110 §10.2.3.
846
+ */
847
+ declare function parseRetryAfterHeader(raw: string): RetryAfterResult | {
848
+ error: string;
849
+ };
815
850
 
816
851
  type network_AcceptLanguageEntry = AcceptLanguageEntry;
817
852
  type network_AcceptLanguageResult = AcceptLanguageResult;
@@ -874,6 +909,9 @@ type network_ReceivedHop = ReceivedHop;
874
909
  type network_ReferrerPolicyEntry = ReferrerPolicyEntry;
875
910
  type network_ReferrerPolicyResult = ReferrerPolicyResult;
876
911
  type network_ReferrerPolicyValue = ReferrerPolicyValue;
912
+ type network_RetryAfterDateResult = RetryAfterDateResult;
913
+ type network_RetryAfterResult = RetryAfterResult;
914
+ type network_RetryAfterSecondsResult = RetryAfterSecondsResult;
877
915
  type network_RobotsGroup = RobotsGroup;
878
916
  type network_RobotsIssue = RobotsIssue;
879
917
  type network_RobotsRule = RobotsRule;
@@ -909,6 +947,7 @@ declare const network_buildPermissionsPolicy: typeof buildPermissionsPolicy;
909
947
  declare const network_buildPreferHeader: typeof buildPreferHeader;
910
948
  declare const network_buildRangeHeader: typeof buildRangeHeader;
911
949
  declare const network_buildReferrerPolicy: typeof buildReferrerPolicy;
950
+ declare const network_buildRetryAfterHeader: typeof buildRetryAfterHeader;
912
951
  declare const network_buildVaryHeader: typeof buildVaryHeader;
913
952
  declare const network_buildXContentTypeOptionsHeader: typeof buildXContentTypeOptionsHeader;
914
953
  declare const network_checkSetCookieHeader: typeof checkSetCookieHeader;
@@ -936,6 +975,7 @@ declare const network_parseHar: typeof parseHar;
936
975
  declare const network_parseIpv6Address: typeof parseIpv6Address;
937
976
  declare const network_parsePermissionsPolicy: typeof parsePermissionsPolicy;
938
977
  declare const network_parsePreferHeader: typeof parsePreferHeader;
978
+ declare const network_parseRetryAfterHeader: typeof parseRetryAfterHeader;
939
979
  declare const network_parseUserAgent: typeof parseUserAgent;
940
980
  declare const network_parseVaryHeader: typeof parseVaryHeader;
941
981
  declare const network_parseXContentTypeOptionsHeader: typeof parseXContentTypeOptionsHeader;
@@ -951,7 +991,7 @@ declare const network_validateManifest: typeof validateManifest;
951
991
  declare const network_validateRobotsTxt: typeof validateRobotsTxt;
952
992
  declare const network_validateSitemap: typeof validateSitemap;
953
993
  declare namespace network {
954
- export { type network_AcceptLanguageEntry as AcceptLanguageEntry, type network_AcceptLanguageResult as AcceptLanguageResult, type network_AuthResultEntry as AuthResultEntry, type network_BuildRangeHeaderOptions as BuildRangeHeaderOptions, network_CLIENT_HINTS as CLIENT_HINTS, type network_CacheControlDirective as CacheControlDirective, type network_CacheControlOptions as CacheControlOptions, type network_CacheControlResult as CacheControlResult, type network_ClientHintDef as ClientHintDef, type network_ClientHintValueType as ClientHintValueType, type network_ClientHintsBuildResult as ClientHintsBuildResult, type network_ClientHintsParseResult as ClientHintsParseResult, type network_ContentDispositionBuildOptions as ContentDispositionBuildOptions, type network_ContentDispositionBuildResult as ContentDispositionBuildResult, type network_ContentDispositionParseResult as ContentDispositionParseResult, type network_ContentRangeResult as ContentRangeResult, type network_ContentTypeRiskResult as ContentTypeRiskResult, type network_ContentTypeSniffRisk as ContentTypeSniffRisk, type network_CookieAttributes as CookieAttributes, type network_CookieCheckResult as CookieCheckResult, network_DNS_RECORD_TYPES as DNS_RECORD_TYPES, type network_DnsRecord as DnsRecord, type network_DnsRecordType as DnsRecordType, type network_DnsResponse as DnsResponse, type network_EmailHeaderAnalysis as EmailHeaderAnalysis, type network_EmailHeaderField as EmailHeaderField, type network_GeoResult as GeoResult, network_HTTP_HEADERS as HTTP_HEADERS, type network_HarEntry as HarEntry, type network_HarParseResult as HarParseResult, type network_HarSummary as HarSummary, type network_HeaderCategory as HeaderCategory, type network_HttpHeader as HttpHeader, type network_Ipv6AddressType as Ipv6AddressType, type network_Ipv6ParseResult as Ipv6ParseResult, network_LINK_REL_VALUES as LINK_REL_VALUES, type network_LinkHeaderEntry as LinkHeaderEntry, type network_LinkHeaderEntryInput as LinkHeaderEntryInput, type network_LinkHeaderResult as LinkHeaderResult, type network_LinkRel as LinkRel, type network_ManifestIconInfo as ManifestIconInfo, type network_ManifestIssue as ManifestIssue, type network_ManifestValidationResult as ManifestValidationResult, network_PERMISSIONS_POLICY_FEATURES as PERMISSIONS_POLICY_FEATURES, type network_ParsedClientHint as ParsedClientHint, type network_ParsedDnsResult as ParsedDnsResult, type network_ParsedGeoResult as ParsedGeoResult, type network_PermissionsPolicyDirective as PermissionsPolicyDirective, type network_PermissionsPolicyFeatureInput as PermissionsPolicyFeatureInput, type network_PermissionsPolicyResult as PermissionsPolicyResult, type network_PreferParameter as PreferParameter, type network_PreferPreference as PreferPreference, type network_PreferResult as PreferResult, network_REFERRER_POLICY_VALUES as REFERRER_POLICY_VALUES, type network_RangeEntry as RangeEntry, type network_RangeEntryInput as RangeEntryInput, type network_RangeHeaderResult as RangeHeaderResult, type network_ReceivedHop as ReceivedHop, type network_ReferrerPolicyEntry as ReferrerPolicyEntry, type network_ReferrerPolicyResult as ReferrerPolicyResult, type network_ReferrerPolicyValue as ReferrerPolicyValue, type network_RobotsGroup as RobotsGroup, type network_RobotsIssue as RobotsIssue, type network_RobotsRule as RobotsRule, type network_RobotsValidationResult as RobotsValidationResult, network_STATUS_CODES as STATUS_CODES, type network_SameSiteValue as SameSiteValue, type network_SitemapIndexEntry as SitemapIndexEntry, type network_SitemapIssue as SitemapIssue, type network_SitemapSplitFile as SitemapSplitFile, type network_SitemapUrlEntry as SitemapUrlEntry, type network_SitemapValidationResult as SitemapValidationResult, type network_SplitSitemapOptions as SplitSitemapOptions, type network_SplitSitemapResult as SplitSitemapResult, type network_StatusCode as StatusCode, type network_UaDeviceType as UaDeviceType, type network_UserAgentInfo as UserAgentInfo, type network_VaryHeaderEntry as VaryHeaderEntry, type network_VaryHeaderResult as VaryHeaderResult, type network_XContentTypeOptionsHeader as XContentTypeOptionsHeader, type network_XContentTypeOptionsParseResult as XContentTypeOptionsParseResult, network_X_CONTENT_TYPE_OPTIONS_HEADER as X_CONTENT_TYPE_OPTIONS_HEADER, network_analyzeEmailHeaders as analyzeEmailHeaders, network_assessContentTypeRisk as assessContentTypeRisk, network_buildAcceptLanguage as buildAcceptLanguage, network_buildCacheControl as buildCacheControl, network_buildClientHints as buildClientHints, network_buildContentDisposition as buildContentDisposition, network_buildDnsQueryUrl as buildDnsQueryUrl, network_buildGeoUrl as buildGeoUrl, network_buildLinkHeader as buildLinkHeader, network_buildMapUrl as buildMapUrl, network_buildPermissionsPolicy as buildPermissionsPolicy, network_buildPreferHeader as buildPreferHeader, network_buildRangeHeader as buildRangeHeader, network_buildReferrerPolicy as buildReferrerPolicy, network_buildVaryHeader as buildVaryHeader, network_buildXContentTypeOptionsHeader as buildXContentTypeOptionsHeader, network_checkSetCookieHeader as checkSetCookieHeader, network_countryCodeToFlag as countryCodeToFlag, network_formatCoordinates as formatCoordinates, network_formatTtl as formatTtl, network_getByCategory as getByCategory, network_getHeader as getHeader, network_getHeadersByCategory as getHeadersByCategory, network_getStatusByCategory as getStatusByCategory, network_getStatusCode as getStatusCode, network_isClientError as isClientError, network_isServerError as isServerError, network_isSuccess as isSuccess, network_isValidIp as isValidIp, network_isValidIpv4 as isValidIpv4, network_isValidIpv6 as isValidIpv6, network_parseAcceptLanguage as parseAcceptLanguage, network_parseClientHintHeaders as parseClientHintHeaders, network_parseContentDisposition as parseContentDisposition, network_parseContentRangeHeader as parseContentRangeHeader, network_parseDnsResponse as parseDnsResponse, network_parseGeoResponse as parseGeoResponse, network_parseHar as parseHar, network_parseIpv6Address as parseIpv6Address, network_parsePermissionsPolicy as parsePermissionsPolicy, network_parsePreferHeader as parsePreferHeader, network_parseUserAgent as parseUserAgent, network_parseVaryHeader as parseVaryHeader, network_parseXContentTypeOptionsHeader as parseXContentTypeOptionsHeader, network_searchHeaders as searchHeaders, network_searchStatusCodes as searchStatusCodes, network_splitSitemap as splitSitemap, network_statusCodeToText as statusCodeToText, network_typeNumberToLabel as typeNumberToLabel, network_validateDomain as validateDomain, network_validateHeaderName as validateHeaderName, network_validateHeaderValue as validateHeaderValue, network_validateManifest as validateManifest, network_validateRobotsTxt as validateRobotsTxt, network_validateSitemap as validateSitemap };
994
+ export { type network_AcceptLanguageEntry as AcceptLanguageEntry, type network_AcceptLanguageResult as AcceptLanguageResult, type network_AuthResultEntry as AuthResultEntry, type network_BuildRangeHeaderOptions as BuildRangeHeaderOptions, network_CLIENT_HINTS as CLIENT_HINTS, type network_CacheControlDirective as CacheControlDirective, type network_CacheControlOptions as CacheControlOptions, type network_CacheControlResult as CacheControlResult, type network_ClientHintDef as ClientHintDef, type network_ClientHintValueType as ClientHintValueType, type network_ClientHintsBuildResult as ClientHintsBuildResult, type network_ClientHintsParseResult as ClientHintsParseResult, type network_ContentDispositionBuildOptions as ContentDispositionBuildOptions, type network_ContentDispositionBuildResult as ContentDispositionBuildResult, type network_ContentDispositionParseResult as ContentDispositionParseResult, type network_ContentRangeResult as ContentRangeResult, type network_ContentTypeRiskResult as ContentTypeRiskResult, type network_ContentTypeSniffRisk as ContentTypeSniffRisk, type network_CookieAttributes as CookieAttributes, type network_CookieCheckResult as CookieCheckResult, network_DNS_RECORD_TYPES as DNS_RECORD_TYPES, type network_DnsRecord as DnsRecord, type network_DnsRecordType as DnsRecordType, type network_DnsResponse as DnsResponse, type network_EmailHeaderAnalysis as EmailHeaderAnalysis, type network_EmailHeaderField as EmailHeaderField, type network_GeoResult as GeoResult, network_HTTP_HEADERS as HTTP_HEADERS, type network_HarEntry as HarEntry, type network_HarParseResult as HarParseResult, type network_HarSummary as HarSummary, type network_HeaderCategory as HeaderCategory, type network_HttpHeader as HttpHeader, type network_Ipv6AddressType as Ipv6AddressType, type network_Ipv6ParseResult as Ipv6ParseResult, network_LINK_REL_VALUES as LINK_REL_VALUES, type network_LinkHeaderEntry as LinkHeaderEntry, type network_LinkHeaderEntryInput as LinkHeaderEntryInput, type network_LinkHeaderResult as LinkHeaderResult, type network_LinkRel as LinkRel, type network_ManifestIconInfo as ManifestIconInfo, type network_ManifestIssue as ManifestIssue, type network_ManifestValidationResult as ManifestValidationResult, network_PERMISSIONS_POLICY_FEATURES as PERMISSIONS_POLICY_FEATURES, type network_ParsedClientHint as ParsedClientHint, type network_ParsedDnsResult as ParsedDnsResult, type network_ParsedGeoResult as ParsedGeoResult, type network_PermissionsPolicyDirective as PermissionsPolicyDirective, type network_PermissionsPolicyFeatureInput as PermissionsPolicyFeatureInput, type network_PermissionsPolicyResult as PermissionsPolicyResult, type network_PreferParameter as PreferParameter, type network_PreferPreference as PreferPreference, type network_PreferResult as PreferResult, network_REFERRER_POLICY_VALUES as REFERRER_POLICY_VALUES, type network_RangeEntry as RangeEntry, type network_RangeEntryInput as RangeEntryInput, type network_RangeHeaderResult as RangeHeaderResult, type network_ReceivedHop as ReceivedHop, type network_ReferrerPolicyEntry as ReferrerPolicyEntry, type network_ReferrerPolicyResult as ReferrerPolicyResult, type network_ReferrerPolicyValue as ReferrerPolicyValue, type network_RetryAfterDateResult as RetryAfterDateResult, type network_RetryAfterResult as RetryAfterResult, type network_RetryAfterSecondsResult as RetryAfterSecondsResult, type network_RobotsGroup as RobotsGroup, type network_RobotsIssue as RobotsIssue, type network_RobotsRule as RobotsRule, type network_RobotsValidationResult as RobotsValidationResult, network_STATUS_CODES as STATUS_CODES, type network_SameSiteValue as SameSiteValue, type network_SitemapIndexEntry as SitemapIndexEntry, type network_SitemapIssue as SitemapIssue, type network_SitemapSplitFile as SitemapSplitFile, type network_SitemapUrlEntry as SitemapUrlEntry, type network_SitemapValidationResult as SitemapValidationResult, type network_SplitSitemapOptions as SplitSitemapOptions, type network_SplitSitemapResult as SplitSitemapResult, type network_StatusCode as StatusCode, type network_UaDeviceType as UaDeviceType, type network_UserAgentInfo as UserAgentInfo, type network_VaryHeaderEntry as VaryHeaderEntry, type network_VaryHeaderResult as VaryHeaderResult, type network_XContentTypeOptionsHeader as XContentTypeOptionsHeader, type network_XContentTypeOptionsParseResult as XContentTypeOptionsParseResult, network_X_CONTENT_TYPE_OPTIONS_HEADER as X_CONTENT_TYPE_OPTIONS_HEADER, network_analyzeEmailHeaders as analyzeEmailHeaders, network_assessContentTypeRisk as assessContentTypeRisk, network_buildAcceptLanguage as buildAcceptLanguage, network_buildCacheControl as buildCacheControl, network_buildClientHints as buildClientHints, network_buildContentDisposition as buildContentDisposition, network_buildDnsQueryUrl as buildDnsQueryUrl, network_buildGeoUrl as buildGeoUrl, network_buildLinkHeader as buildLinkHeader, network_buildMapUrl as buildMapUrl, network_buildPermissionsPolicy as buildPermissionsPolicy, network_buildPreferHeader as buildPreferHeader, network_buildRangeHeader as buildRangeHeader, network_buildReferrerPolicy as buildReferrerPolicy, network_buildRetryAfterHeader as buildRetryAfterHeader, network_buildVaryHeader as buildVaryHeader, network_buildXContentTypeOptionsHeader as buildXContentTypeOptionsHeader, network_checkSetCookieHeader as checkSetCookieHeader, network_countryCodeToFlag as countryCodeToFlag, network_formatCoordinates as formatCoordinates, network_formatTtl as formatTtl, network_getByCategory as getByCategory, network_getHeader as getHeader, network_getHeadersByCategory as getHeadersByCategory, network_getStatusByCategory as getStatusByCategory, network_getStatusCode as getStatusCode, network_isClientError as isClientError, network_isServerError as isServerError, network_isSuccess as isSuccess, network_isValidIp as isValidIp, network_isValidIpv4 as isValidIpv4, network_isValidIpv6 as isValidIpv6, network_parseAcceptLanguage as parseAcceptLanguage, network_parseClientHintHeaders as parseClientHintHeaders, network_parseContentDisposition as parseContentDisposition, network_parseContentRangeHeader as parseContentRangeHeader, network_parseDnsResponse as parseDnsResponse, network_parseGeoResponse as parseGeoResponse, network_parseHar as parseHar, network_parseIpv6Address as parseIpv6Address, network_parsePermissionsPolicy as parsePermissionsPolicy, network_parsePreferHeader as parsePreferHeader, network_parseRetryAfterHeader as parseRetryAfterHeader, network_parseUserAgent as parseUserAgent, network_parseVaryHeader as parseVaryHeader, network_parseXContentTypeOptionsHeader as parseXContentTypeOptionsHeader, network_searchHeaders as searchHeaders, network_searchStatusCodes as searchStatusCodes, network_splitSitemap as splitSitemap, network_statusCodeToText as statusCodeToText, network_typeNumberToLabel as typeNumberToLabel, network_validateDomain as validateDomain, network_validateHeaderName as validateHeaderName, network_validateHeaderValue as validateHeaderValue, network_validateManifest as validateManifest, network_validateRobotsTxt as validateRobotsTxt, network_validateSitemap as validateSitemap };
955
995
  }
956
996
 
957
- export { type PreferResult as $, type AcceptLanguageEntry as A, type BuildRangeHeaderOptions as B, CLIENT_HINTS as C, DNS_RECORD_TYPES as D, type EmailHeaderAnalysis as E, type HttpHeader as F, type GeoResult as G, HTTP_HEADERS as H, type Ipv6AddressType as I, type Ipv6ParseResult as J, type LinkHeaderEntry as K, LINK_REL_VALUES as L, type LinkHeaderEntryInput as M, type LinkHeaderResult as N, type LinkRel as O, type ManifestIconInfo as P, type ManifestIssue as Q, type ManifestValidationResult as R, PERMISSIONS_POLICY_FEATURES as S, type ParsedClientHint as T, type ParsedDnsResult as U, type ParsedGeoResult as V, type PermissionsPolicyDirective as W, type PermissionsPolicyFeatureInput as X, type PermissionsPolicyResult as Y, type PreferParameter as Z, type PreferPreference as _, type AcceptLanguageResult as a, parseContentRangeHeader as a$, REFERRER_POLICY_VALUES as a0, type RangeEntry as a1, type RangeEntryInput as a2, type RangeHeaderResult as a3, type ReceivedHop as a4, type ReferrerPolicyEntry as a5, type ReferrerPolicyResult as a6, type ReferrerPolicyValue as a7, type RobotsGroup as a8, type RobotsIssue as a9, buildGeoUrl as aA, buildLinkHeader as aB, buildMapUrl as aC, buildPermissionsPolicy as aD, buildPreferHeader as aE, buildRangeHeader as aF, buildReferrerPolicy as aG, buildVaryHeader as aH, buildXContentTypeOptionsHeader as aI, checkSetCookieHeader as aJ, countryCodeToFlag as aK, formatCoordinates as aL, formatTtl as aM, getByCategory as aN, getHeader as aO, getHeadersByCategory as aP, getStatusByCategory as aQ, getStatusCode as aR, isClientError as aS, isServerError as aT, isSuccess as aU, isValidIp as aV, isValidIpv4 as aW, isValidIpv6 as aX, parseAcceptLanguage as aY, parseClientHintHeaders as aZ, parseContentDisposition as a_, type RobotsRule as aa, type RobotsValidationResult as ab, STATUS_CODES as ac, type SameSiteValue as ad, type SitemapIndexEntry as ae, type SitemapIssue as af, type SitemapSplitFile as ag, type SitemapUrlEntry as ah, type SitemapValidationResult as ai, type SplitSitemapOptions as aj, type SplitSitemapResult as ak, type StatusCode as al, type UaDeviceType as am, type UserAgentInfo as an, type VaryHeaderEntry as ao, type VaryHeaderResult as ap, type XContentTypeOptionsHeader as aq, type XContentTypeOptionsParseResult as ar, X_CONTENT_TYPE_OPTIONS_HEADER as as, analyzeEmailHeaders as at, assessContentTypeRisk as au, buildAcceptLanguage as av, buildCacheControl as aw, buildClientHints as ax, buildContentDisposition as ay, buildDnsQueryUrl as az, type AuthResultEntry as b, parseDnsResponse as b0, parseGeoResponse as b1, parseHar as b2, parseIpv6Address as b3, parsePermissionsPolicy as b4, parsePreferHeader as b5, parseUserAgent as b6, parseVaryHeader as b7, parseXContentTypeOptionsHeader as b8, searchHeaders as b9, searchStatusCodes as ba, splitSitemap as bb, statusCodeToText as bc, typeNumberToLabel as bd, validateDomain as be, validateHeaderName as bf, validateHeaderValue as bg, validateManifest as bh, validateRobotsTxt as bi, validateSitemap as bj, type CacheControlDirective as c, type CacheControlOptions as d, type CacheControlResult as e, type ClientHintDef as f, type ClientHintValueType as g, type ClientHintsBuildResult as h, type ClientHintsParseResult as i, type ContentDispositionBuildOptions as j, type ContentDispositionBuildResult as k, type ContentDispositionParseResult as l, type ContentRangeResult as m, network as n, type ContentTypeRiskResult as o, type ContentTypeSniffRisk as p, type CookieAttributes as q, type CookieCheckResult as r, type DnsRecord as s, type DnsRecordType as t, type DnsResponse as u, type EmailHeaderField as v, type HarEntry as w, type HarParseResult as x, type HarSummary as y, type HeaderCategory as z };
997
+ export { type PreferResult as $, type AcceptLanguageEntry as A, type BuildRangeHeaderOptions as B, CLIENT_HINTS as C, DNS_RECORD_TYPES as D, type EmailHeaderAnalysis as E, type HttpHeader as F, type GeoResult as G, HTTP_HEADERS as H, type Ipv6AddressType as I, type Ipv6ParseResult as J, type LinkHeaderEntry as K, LINK_REL_VALUES as L, type LinkHeaderEntryInput as M, type LinkHeaderResult as N, type LinkRel as O, type ManifestIconInfo as P, type ManifestIssue as Q, type ManifestValidationResult as R, PERMISSIONS_POLICY_FEATURES as S, type ParsedClientHint as T, type ParsedDnsResult as U, type ParsedGeoResult as V, type PermissionsPolicyDirective as W, type PermissionsPolicyFeatureInput as X, type PermissionsPolicyResult as Y, type PreferParameter as Z, type PreferPreference as _, type AcceptLanguageResult as a, isValidIpv6 as a$, REFERRER_POLICY_VALUES as a0, type RangeEntry as a1, type RangeEntryInput as a2, type RangeHeaderResult as a3, type ReceivedHop as a4, type ReferrerPolicyEntry as a5, type ReferrerPolicyResult as a6, type ReferrerPolicyValue as a7, type RetryAfterDateResult as a8, type RetryAfterResult as a9, buildClientHints as aA, buildContentDisposition as aB, buildDnsQueryUrl as aC, buildGeoUrl as aD, buildLinkHeader as aE, buildMapUrl as aF, buildPermissionsPolicy as aG, buildPreferHeader as aH, buildRangeHeader as aI, buildReferrerPolicy as aJ, buildRetryAfterHeader as aK, buildVaryHeader as aL, buildXContentTypeOptionsHeader as aM, checkSetCookieHeader as aN, countryCodeToFlag as aO, formatCoordinates as aP, formatTtl as aQ, getByCategory as aR, getHeader as aS, getHeadersByCategory as aT, getStatusByCategory as aU, getStatusCode as aV, isClientError as aW, isServerError as aX, isSuccess as aY, isValidIp as aZ, isValidIpv4 as a_, type RetryAfterSecondsResult as aa, type RobotsGroup as ab, type RobotsIssue as ac, type RobotsRule as ad, type RobotsValidationResult as ae, STATUS_CODES as af, type SameSiteValue as ag, type SitemapIndexEntry as ah, type SitemapIssue as ai, type SitemapSplitFile as aj, type SitemapUrlEntry as ak, type SitemapValidationResult as al, type SplitSitemapOptions as am, type SplitSitemapResult as an, type StatusCode as ao, type UaDeviceType as ap, type UserAgentInfo as aq, type VaryHeaderEntry as ar, type VaryHeaderResult as as, type XContentTypeOptionsHeader as at, type XContentTypeOptionsParseResult as au, X_CONTENT_TYPE_OPTIONS_HEADER as av, analyzeEmailHeaders as aw, assessContentTypeRisk as ax, buildAcceptLanguage as ay, buildCacheControl as az, type AuthResultEntry as b, parseAcceptLanguage as b0, parseClientHintHeaders as b1, parseContentDisposition as b2, parseContentRangeHeader as b3, parseDnsResponse as b4, parseGeoResponse as b5, parseHar as b6, parseIpv6Address as b7, parsePermissionsPolicy as b8, parsePreferHeader as b9, parseRetryAfterHeader as ba, parseUserAgent as bb, parseVaryHeader as bc, parseXContentTypeOptionsHeader as bd, searchHeaders as be, searchStatusCodes as bf, splitSitemap as bg, statusCodeToText as bh, typeNumberToLabel as bi, validateDomain as bj, validateHeaderName as bk, validateHeaderValue as bl, validateManifest as bm, validateRobotsTxt as bn, validateSitemap as bo, type CacheControlDirective as c, type CacheControlOptions as d, type CacheControlResult as e, type ClientHintDef as f, type ClientHintValueType as g, type ClientHintsBuildResult as h, type ClientHintsParseResult as i, type ContentDispositionBuildOptions as j, type ContentDispositionBuildResult as k, type ContentDispositionParseResult as l, type ContentRangeResult as m, network as n, type ContentTypeRiskResult as o, type ContentTypeSniffRisk as p, type CookieAttributes as q, type CookieCheckResult as r, type DnsRecord as s, type DnsRecordType as t, type DnsResponse as u, type EmailHeaderField as v, type HarEntry as w, type HarParseResult as x, type HarSummary as y, type HeaderCategory as z };
@@ -24,6 +24,7 @@
24
24
  * - x-content-type-options-builder: buildXContentTypeOptionsHeader, parseXContentTypeOptionsHeader, assessContentTypeRisk
25
25
  * - accept-language-parser: parseAcceptLanguage, buildAcceptLanguage
26
26
  * - prefer-header: buildPreferHeader, parsePreferHeader
27
+ * - retry-after-builder: buildRetryAfterHeader, parseRetryAfterHeader
27
28
  */
28
29
  declare const DNS_RECORD_TYPES: readonly ["A", "AAAA", "CNAME", "MX", "TXT", "NS", "SOA", "PTR", "SRV", "CAA"];
29
30
  type DnsRecordType = typeof DNS_RECORD_TYPES[number];
@@ -812,6 +813,40 @@ declare function buildPreferHeader(preferences: {
812
813
  declare function parsePreferHeader(raw: string): PreferResult | {
813
814
  error: string;
814
815
  };
816
+ interface RetryAfterSecondsResult {
817
+ header: string;
818
+ headerValue: string;
819
+ type: 'seconds';
820
+ seconds: number;
821
+ }
822
+ interface RetryAfterDateResult {
823
+ header: string;
824
+ headerValue: string;
825
+ type: 'http-date';
826
+ httpDate: string;
827
+ iso: string;
828
+ }
829
+ type RetryAfterResult = RetryAfterSecondsResult | RetryAfterDateResult;
830
+ /**
831
+ * Build a `Retry-After` response header value from either a non-negative
832
+ * delay in seconds or a target date/time, per RFC 9110 §10.2.3. A date is
833
+ * formatted as an HTTP-date (IMF-fixdate, e.g. "Wed, 21 Oct 2026 07:28:00
834
+ * GMT"), the only date format the header allows.
835
+ */
836
+ declare function buildRetryAfterHeader(input: {
837
+ seconds?: number;
838
+ date?: string;
839
+ }): RetryAfterResult | {
840
+ error: string;
841
+ };
842
+ /**
843
+ * Parse an existing `Retry-After` header value (with or without a leading
844
+ * `Retry-After:` label) into either its delay-in-seconds form or its
845
+ * HTTP-date form, per RFC 9110 §10.2.3.
846
+ */
847
+ declare function parseRetryAfterHeader(raw: string): RetryAfterResult | {
848
+ error: string;
849
+ };
815
850
 
816
851
  type network_AcceptLanguageEntry = AcceptLanguageEntry;
817
852
  type network_AcceptLanguageResult = AcceptLanguageResult;
@@ -874,6 +909,9 @@ type network_ReceivedHop = ReceivedHop;
874
909
  type network_ReferrerPolicyEntry = ReferrerPolicyEntry;
875
910
  type network_ReferrerPolicyResult = ReferrerPolicyResult;
876
911
  type network_ReferrerPolicyValue = ReferrerPolicyValue;
912
+ type network_RetryAfterDateResult = RetryAfterDateResult;
913
+ type network_RetryAfterResult = RetryAfterResult;
914
+ type network_RetryAfterSecondsResult = RetryAfterSecondsResult;
877
915
  type network_RobotsGroup = RobotsGroup;
878
916
  type network_RobotsIssue = RobotsIssue;
879
917
  type network_RobotsRule = RobotsRule;
@@ -909,6 +947,7 @@ declare const network_buildPermissionsPolicy: typeof buildPermissionsPolicy;
909
947
  declare const network_buildPreferHeader: typeof buildPreferHeader;
910
948
  declare const network_buildRangeHeader: typeof buildRangeHeader;
911
949
  declare const network_buildReferrerPolicy: typeof buildReferrerPolicy;
950
+ declare const network_buildRetryAfterHeader: typeof buildRetryAfterHeader;
912
951
  declare const network_buildVaryHeader: typeof buildVaryHeader;
913
952
  declare const network_buildXContentTypeOptionsHeader: typeof buildXContentTypeOptionsHeader;
914
953
  declare const network_checkSetCookieHeader: typeof checkSetCookieHeader;
@@ -936,6 +975,7 @@ declare const network_parseHar: typeof parseHar;
936
975
  declare const network_parseIpv6Address: typeof parseIpv6Address;
937
976
  declare const network_parsePermissionsPolicy: typeof parsePermissionsPolicy;
938
977
  declare const network_parsePreferHeader: typeof parsePreferHeader;
978
+ declare const network_parseRetryAfterHeader: typeof parseRetryAfterHeader;
939
979
  declare const network_parseUserAgent: typeof parseUserAgent;
940
980
  declare const network_parseVaryHeader: typeof parseVaryHeader;
941
981
  declare const network_parseXContentTypeOptionsHeader: typeof parseXContentTypeOptionsHeader;
@@ -951,7 +991,7 @@ declare const network_validateManifest: typeof validateManifest;
951
991
  declare const network_validateRobotsTxt: typeof validateRobotsTxt;
952
992
  declare const network_validateSitemap: typeof validateSitemap;
953
993
  declare namespace network {
954
- export { type network_AcceptLanguageEntry as AcceptLanguageEntry, type network_AcceptLanguageResult as AcceptLanguageResult, type network_AuthResultEntry as AuthResultEntry, type network_BuildRangeHeaderOptions as BuildRangeHeaderOptions, network_CLIENT_HINTS as CLIENT_HINTS, type network_CacheControlDirective as CacheControlDirective, type network_CacheControlOptions as CacheControlOptions, type network_CacheControlResult as CacheControlResult, type network_ClientHintDef as ClientHintDef, type network_ClientHintValueType as ClientHintValueType, type network_ClientHintsBuildResult as ClientHintsBuildResult, type network_ClientHintsParseResult as ClientHintsParseResult, type network_ContentDispositionBuildOptions as ContentDispositionBuildOptions, type network_ContentDispositionBuildResult as ContentDispositionBuildResult, type network_ContentDispositionParseResult as ContentDispositionParseResult, type network_ContentRangeResult as ContentRangeResult, type network_ContentTypeRiskResult as ContentTypeRiskResult, type network_ContentTypeSniffRisk as ContentTypeSniffRisk, type network_CookieAttributes as CookieAttributes, type network_CookieCheckResult as CookieCheckResult, network_DNS_RECORD_TYPES as DNS_RECORD_TYPES, type network_DnsRecord as DnsRecord, type network_DnsRecordType as DnsRecordType, type network_DnsResponse as DnsResponse, type network_EmailHeaderAnalysis as EmailHeaderAnalysis, type network_EmailHeaderField as EmailHeaderField, type network_GeoResult as GeoResult, network_HTTP_HEADERS as HTTP_HEADERS, type network_HarEntry as HarEntry, type network_HarParseResult as HarParseResult, type network_HarSummary as HarSummary, type network_HeaderCategory as HeaderCategory, type network_HttpHeader as HttpHeader, type network_Ipv6AddressType as Ipv6AddressType, type network_Ipv6ParseResult as Ipv6ParseResult, network_LINK_REL_VALUES as LINK_REL_VALUES, type network_LinkHeaderEntry as LinkHeaderEntry, type network_LinkHeaderEntryInput as LinkHeaderEntryInput, type network_LinkHeaderResult as LinkHeaderResult, type network_LinkRel as LinkRel, type network_ManifestIconInfo as ManifestIconInfo, type network_ManifestIssue as ManifestIssue, type network_ManifestValidationResult as ManifestValidationResult, network_PERMISSIONS_POLICY_FEATURES as PERMISSIONS_POLICY_FEATURES, type network_ParsedClientHint as ParsedClientHint, type network_ParsedDnsResult as ParsedDnsResult, type network_ParsedGeoResult as ParsedGeoResult, type network_PermissionsPolicyDirective as PermissionsPolicyDirective, type network_PermissionsPolicyFeatureInput as PermissionsPolicyFeatureInput, type network_PermissionsPolicyResult as PermissionsPolicyResult, type network_PreferParameter as PreferParameter, type network_PreferPreference as PreferPreference, type network_PreferResult as PreferResult, network_REFERRER_POLICY_VALUES as REFERRER_POLICY_VALUES, type network_RangeEntry as RangeEntry, type network_RangeEntryInput as RangeEntryInput, type network_RangeHeaderResult as RangeHeaderResult, type network_ReceivedHop as ReceivedHop, type network_ReferrerPolicyEntry as ReferrerPolicyEntry, type network_ReferrerPolicyResult as ReferrerPolicyResult, type network_ReferrerPolicyValue as ReferrerPolicyValue, type network_RobotsGroup as RobotsGroup, type network_RobotsIssue as RobotsIssue, type network_RobotsRule as RobotsRule, type network_RobotsValidationResult as RobotsValidationResult, network_STATUS_CODES as STATUS_CODES, type network_SameSiteValue as SameSiteValue, type network_SitemapIndexEntry as SitemapIndexEntry, type network_SitemapIssue as SitemapIssue, type network_SitemapSplitFile as SitemapSplitFile, type network_SitemapUrlEntry as SitemapUrlEntry, type network_SitemapValidationResult as SitemapValidationResult, type network_SplitSitemapOptions as SplitSitemapOptions, type network_SplitSitemapResult as SplitSitemapResult, type network_StatusCode as StatusCode, type network_UaDeviceType as UaDeviceType, type network_UserAgentInfo as UserAgentInfo, type network_VaryHeaderEntry as VaryHeaderEntry, type network_VaryHeaderResult as VaryHeaderResult, type network_XContentTypeOptionsHeader as XContentTypeOptionsHeader, type network_XContentTypeOptionsParseResult as XContentTypeOptionsParseResult, network_X_CONTENT_TYPE_OPTIONS_HEADER as X_CONTENT_TYPE_OPTIONS_HEADER, network_analyzeEmailHeaders as analyzeEmailHeaders, network_assessContentTypeRisk as assessContentTypeRisk, network_buildAcceptLanguage as buildAcceptLanguage, network_buildCacheControl as buildCacheControl, network_buildClientHints as buildClientHints, network_buildContentDisposition as buildContentDisposition, network_buildDnsQueryUrl as buildDnsQueryUrl, network_buildGeoUrl as buildGeoUrl, network_buildLinkHeader as buildLinkHeader, network_buildMapUrl as buildMapUrl, network_buildPermissionsPolicy as buildPermissionsPolicy, network_buildPreferHeader as buildPreferHeader, network_buildRangeHeader as buildRangeHeader, network_buildReferrerPolicy as buildReferrerPolicy, network_buildVaryHeader as buildVaryHeader, network_buildXContentTypeOptionsHeader as buildXContentTypeOptionsHeader, network_checkSetCookieHeader as checkSetCookieHeader, network_countryCodeToFlag as countryCodeToFlag, network_formatCoordinates as formatCoordinates, network_formatTtl as formatTtl, network_getByCategory as getByCategory, network_getHeader as getHeader, network_getHeadersByCategory as getHeadersByCategory, network_getStatusByCategory as getStatusByCategory, network_getStatusCode as getStatusCode, network_isClientError as isClientError, network_isServerError as isServerError, network_isSuccess as isSuccess, network_isValidIp as isValidIp, network_isValidIpv4 as isValidIpv4, network_isValidIpv6 as isValidIpv6, network_parseAcceptLanguage as parseAcceptLanguage, network_parseClientHintHeaders as parseClientHintHeaders, network_parseContentDisposition as parseContentDisposition, network_parseContentRangeHeader as parseContentRangeHeader, network_parseDnsResponse as parseDnsResponse, network_parseGeoResponse as parseGeoResponse, network_parseHar as parseHar, network_parseIpv6Address as parseIpv6Address, network_parsePermissionsPolicy as parsePermissionsPolicy, network_parsePreferHeader as parsePreferHeader, network_parseUserAgent as parseUserAgent, network_parseVaryHeader as parseVaryHeader, network_parseXContentTypeOptionsHeader as parseXContentTypeOptionsHeader, network_searchHeaders as searchHeaders, network_searchStatusCodes as searchStatusCodes, network_splitSitemap as splitSitemap, network_statusCodeToText as statusCodeToText, network_typeNumberToLabel as typeNumberToLabel, network_validateDomain as validateDomain, network_validateHeaderName as validateHeaderName, network_validateHeaderValue as validateHeaderValue, network_validateManifest as validateManifest, network_validateRobotsTxt as validateRobotsTxt, network_validateSitemap as validateSitemap };
994
+ export { type network_AcceptLanguageEntry as AcceptLanguageEntry, type network_AcceptLanguageResult as AcceptLanguageResult, type network_AuthResultEntry as AuthResultEntry, type network_BuildRangeHeaderOptions as BuildRangeHeaderOptions, network_CLIENT_HINTS as CLIENT_HINTS, type network_CacheControlDirective as CacheControlDirective, type network_CacheControlOptions as CacheControlOptions, type network_CacheControlResult as CacheControlResult, type network_ClientHintDef as ClientHintDef, type network_ClientHintValueType as ClientHintValueType, type network_ClientHintsBuildResult as ClientHintsBuildResult, type network_ClientHintsParseResult as ClientHintsParseResult, type network_ContentDispositionBuildOptions as ContentDispositionBuildOptions, type network_ContentDispositionBuildResult as ContentDispositionBuildResult, type network_ContentDispositionParseResult as ContentDispositionParseResult, type network_ContentRangeResult as ContentRangeResult, type network_ContentTypeRiskResult as ContentTypeRiskResult, type network_ContentTypeSniffRisk as ContentTypeSniffRisk, type network_CookieAttributes as CookieAttributes, type network_CookieCheckResult as CookieCheckResult, network_DNS_RECORD_TYPES as DNS_RECORD_TYPES, type network_DnsRecord as DnsRecord, type network_DnsRecordType as DnsRecordType, type network_DnsResponse as DnsResponse, type network_EmailHeaderAnalysis as EmailHeaderAnalysis, type network_EmailHeaderField as EmailHeaderField, type network_GeoResult as GeoResult, network_HTTP_HEADERS as HTTP_HEADERS, type network_HarEntry as HarEntry, type network_HarParseResult as HarParseResult, type network_HarSummary as HarSummary, type network_HeaderCategory as HeaderCategory, type network_HttpHeader as HttpHeader, type network_Ipv6AddressType as Ipv6AddressType, type network_Ipv6ParseResult as Ipv6ParseResult, network_LINK_REL_VALUES as LINK_REL_VALUES, type network_LinkHeaderEntry as LinkHeaderEntry, type network_LinkHeaderEntryInput as LinkHeaderEntryInput, type network_LinkHeaderResult as LinkHeaderResult, type network_LinkRel as LinkRel, type network_ManifestIconInfo as ManifestIconInfo, type network_ManifestIssue as ManifestIssue, type network_ManifestValidationResult as ManifestValidationResult, network_PERMISSIONS_POLICY_FEATURES as PERMISSIONS_POLICY_FEATURES, type network_ParsedClientHint as ParsedClientHint, type network_ParsedDnsResult as ParsedDnsResult, type network_ParsedGeoResult as ParsedGeoResult, type network_PermissionsPolicyDirective as PermissionsPolicyDirective, type network_PermissionsPolicyFeatureInput as PermissionsPolicyFeatureInput, type network_PermissionsPolicyResult as PermissionsPolicyResult, type network_PreferParameter as PreferParameter, type network_PreferPreference as PreferPreference, type network_PreferResult as PreferResult, network_REFERRER_POLICY_VALUES as REFERRER_POLICY_VALUES, type network_RangeEntry as RangeEntry, type network_RangeEntryInput as RangeEntryInput, type network_RangeHeaderResult as RangeHeaderResult, type network_ReceivedHop as ReceivedHop, type network_ReferrerPolicyEntry as ReferrerPolicyEntry, type network_ReferrerPolicyResult as ReferrerPolicyResult, type network_ReferrerPolicyValue as ReferrerPolicyValue, type network_RetryAfterDateResult as RetryAfterDateResult, type network_RetryAfterResult as RetryAfterResult, type network_RetryAfterSecondsResult as RetryAfterSecondsResult, type network_RobotsGroup as RobotsGroup, type network_RobotsIssue as RobotsIssue, type network_RobotsRule as RobotsRule, type network_RobotsValidationResult as RobotsValidationResult, network_STATUS_CODES as STATUS_CODES, type network_SameSiteValue as SameSiteValue, type network_SitemapIndexEntry as SitemapIndexEntry, type network_SitemapIssue as SitemapIssue, type network_SitemapSplitFile as SitemapSplitFile, type network_SitemapUrlEntry as SitemapUrlEntry, type network_SitemapValidationResult as SitemapValidationResult, type network_SplitSitemapOptions as SplitSitemapOptions, type network_SplitSitemapResult as SplitSitemapResult, type network_StatusCode as StatusCode, type network_UaDeviceType as UaDeviceType, type network_UserAgentInfo as UserAgentInfo, type network_VaryHeaderEntry as VaryHeaderEntry, type network_VaryHeaderResult as VaryHeaderResult, type network_XContentTypeOptionsHeader as XContentTypeOptionsHeader, type network_XContentTypeOptionsParseResult as XContentTypeOptionsParseResult, network_X_CONTENT_TYPE_OPTIONS_HEADER as X_CONTENT_TYPE_OPTIONS_HEADER, network_analyzeEmailHeaders as analyzeEmailHeaders, network_assessContentTypeRisk as assessContentTypeRisk, network_buildAcceptLanguage as buildAcceptLanguage, network_buildCacheControl as buildCacheControl, network_buildClientHints as buildClientHints, network_buildContentDisposition as buildContentDisposition, network_buildDnsQueryUrl as buildDnsQueryUrl, network_buildGeoUrl as buildGeoUrl, network_buildLinkHeader as buildLinkHeader, network_buildMapUrl as buildMapUrl, network_buildPermissionsPolicy as buildPermissionsPolicy, network_buildPreferHeader as buildPreferHeader, network_buildRangeHeader as buildRangeHeader, network_buildReferrerPolicy as buildReferrerPolicy, network_buildRetryAfterHeader as buildRetryAfterHeader, network_buildVaryHeader as buildVaryHeader, network_buildXContentTypeOptionsHeader as buildXContentTypeOptionsHeader, network_checkSetCookieHeader as checkSetCookieHeader, network_countryCodeToFlag as countryCodeToFlag, network_formatCoordinates as formatCoordinates, network_formatTtl as formatTtl, network_getByCategory as getByCategory, network_getHeader as getHeader, network_getHeadersByCategory as getHeadersByCategory, network_getStatusByCategory as getStatusByCategory, network_getStatusCode as getStatusCode, network_isClientError as isClientError, network_isServerError as isServerError, network_isSuccess as isSuccess, network_isValidIp as isValidIp, network_isValidIpv4 as isValidIpv4, network_isValidIpv6 as isValidIpv6, network_parseAcceptLanguage as parseAcceptLanguage, network_parseClientHintHeaders as parseClientHintHeaders, network_parseContentDisposition as parseContentDisposition, network_parseContentRangeHeader as parseContentRangeHeader, network_parseDnsResponse as parseDnsResponse, network_parseGeoResponse as parseGeoResponse, network_parseHar as parseHar, network_parseIpv6Address as parseIpv6Address, network_parsePermissionsPolicy as parsePermissionsPolicy, network_parsePreferHeader as parsePreferHeader, network_parseRetryAfterHeader as parseRetryAfterHeader, network_parseUserAgent as parseUserAgent, network_parseVaryHeader as parseVaryHeader, network_parseXContentTypeOptionsHeader as parseXContentTypeOptionsHeader, network_searchHeaders as searchHeaders, network_searchStatusCodes as searchStatusCodes, network_splitSitemap as splitSitemap, network_statusCodeToText as statusCodeToText, network_typeNumberToLabel as typeNumberToLabel, network_validateDomain as validateDomain, network_validateHeaderName as validateHeaderName, network_validateHeaderValue as validateHeaderValue, network_validateManifest as validateManifest, network_validateRobotsTxt as validateRobotsTxt, network_validateSitemap as validateSitemap };
955
995
  }
956
996
 
957
- export { type PreferResult as $, type AcceptLanguageEntry as A, type BuildRangeHeaderOptions as B, CLIENT_HINTS as C, DNS_RECORD_TYPES as D, type EmailHeaderAnalysis as E, type HttpHeader as F, type GeoResult as G, HTTP_HEADERS as H, type Ipv6AddressType as I, type Ipv6ParseResult as J, type LinkHeaderEntry as K, LINK_REL_VALUES as L, type LinkHeaderEntryInput as M, type LinkHeaderResult as N, type LinkRel as O, type ManifestIconInfo as P, type ManifestIssue as Q, type ManifestValidationResult as R, PERMISSIONS_POLICY_FEATURES as S, type ParsedClientHint as T, type ParsedDnsResult as U, type ParsedGeoResult as V, type PermissionsPolicyDirective as W, type PermissionsPolicyFeatureInput as X, type PermissionsPolicyResult as Y, type PreferParameter as Z, type PreferPreference as _, type AcceptLanguageResult as a, parseContentRangeHeader as a$, REFERRER_POLICY_VALUES as a0, type RangeEntry as a1, type RangeEntryInput as a2, type RangeHeaderResult as a3, type ReceivedHop as a4, type ReferrerPolicyEntry as a5, type ReferrerPolicyResult as a6, type ReferrerPolicyValue as a7, type RobotsGroup as a8, type RobotsIssue as a9, buildGeoUrl as aA, buildLinkHeader as aB, buildMapUrl as aC, buildPermissionsPolicy as aD, buildPreferHeader as aE, buildRangeHeader as aF, buildReferrerPolicy as aG, buildVaryHeader as aH, buildXContentTypeOptionsHeader as aI, checkSetCookieHeader as aJ, countryCodeToFlag as aK, formatCoordinates as aL, formatTtl as aM, getByCategory as aN, getHeader as aO, getHeadersByCategory as aP, getStatusByCategory as aQ, getStatusCode as aR, isClientError as aS, isServerError as aT, isSuccess as aU, isValidIp as aV, isValidIpv4 as aW, isValidIpv6 as aX, parseAcceptLanguage as aY, parseClientHintHeaders as aZ, parseContentDisposition as a_, type RobotsRule as aa, type RobotsValidationResult as ab, STATUS_CODES as ac, type SameSiteValue as ad, type SitemapIndexEntry as ae, type SitemapIssue as af, type SitemapSplitFile as ag, type SitemapUrlEntry as ah, type SitemapValidationResult as ai, type SplitSitemapOptions as aj, type SplitSitemapResult as ak, type StatusCode as al, type UaDeviceType as am, type UserAgentInfo as an, type VaryHeaderEntry as ao, type VaryHeaderResult as ap, type XContentTypeOptionsHeader as aq, type XContentTypeOptionsParseResult as ar, X_CONTENT_TYPE_OPTIONS_HEADER as as, analyzeEmailHeaders as at, assessContentTypeRisk as au, buildAcceptLanguage as av, buildCacheControl as aw, buildClientHints as ax, buildContentDisposition as ay, buildDnsQueryUrl as az, type AuthResultEntry as b, parseDnsResponse as b0, parseGeoResponse as b1, parseHar as b2, parseIpv6Address as b3, parsePermissionsPolicy as b4, parsePreferHeader as b5, parseUserAgent as b6, parseVaryHeader as b7, parseXContentTypeOptionsHeader as b8, searchHeaders as b9, searchStatusCodes as ba, splitSitemap as bb, statusCodeToText as bc, typeNumberToLabel as bd, validateDomain as be, validateHeaderName as bf, validateHeaderValue as bg, validateManifest as bh, validateRobotsTxt as bi, validateSitemap as bj, type CacheControlDirective as c, type CacheControlOptions as d, type CacheControlResult as e, type ClientHintDef as f, type ClientHintValueType as g, type ClientHintsBuildResult as h, type ClientHintsParseResult as i, type ContentDispositionBuildOptions as j, type ContentDispositionBuildResult as k, type ContentDispositionParseResult as l, type ContentRangeResult as m, network as n, type ContentTypeRiskResult as o, type ContentTypeSniffRisk as p, type CookieAttributes as q, type CookieCheckResult as r, type DnsRecord as s, type DnsRecordType as t, type DnsResponse as u, type EmailHeaderField as v, type HarEntry as w, type HarParseResult as x, type HarSummary as y, type HeaderCategory as z };
997
+ export { type PreferResult as $, type AcceptLanguageEntry as A, type BuildRangeHeaderOptions as B, CLIENT_HINTS as C, DNS_RECORD_TYPES as D, type EmailHeaderAnalysis as E, type HttpHeader as F, type GeoResult as G, HTTP_HEADERS as H, type Ipv6AddressType as I, type Ipv6ParseResult as J, type LinkHeaderEntry as K, LINK_REL_VALUES as L, type LinkHeaderEntryInput as M, type LinkHeaderResult as N, type LinkRel as O, type ManifestIconInfo as P, type ManifestIssue as Q, type ManifestValidationResult as R, PERMISSIONS_POLICY_FEATURES as S, type ParsedClientHint as T, type ParsedDnsResult as U, type ParsedGeoResult as V, type PermissionsPolicyDirective as W, type PermissionsPolicyFeatureInput as X, type PermissionsPolicyResult as Y, type PreferParameter as Z, type PreferPreference as _, type AcceptLanguageResult as a, isValidIpv6 as a$, REFERRER_POLICY_VALUES as a0, type RangeEntry as a1, type RangeEntryInput as a2, type RangeHeaderResult as a3, type ReceivedHop as a4, type ReferrerPolicyEntry as a5, type ReferrerPolicyResult as a6, type ReferrerPolicyValue as a7, type RetryAfterDateResult as a8, type RetryAfterResult as a9, buildClientHints as aA, buildContentDisposition as aB, buildDnsQueryUrl as aC, buildGeoUrl as aD, buildLinkHeader as aE, buildMapUrl as aF, buildPermissionsPolicy as aG, buildPreferHeader as aH, buildRangeHeader as aI, buildReferrerPolicy as aJ, buildRetryAfterHeader as aK, buildVaryHeader as aL, buildXContentTypeOptionsHeader as aM, checkSetCookieHeader as aN, countryCodeToFlag as aO, formatCoordinates as aP, formatTtl as aQ, getByCategory as aR, getHeader as aS, getHeadersByCategory as aT, getStatusByCategory as aU, getStatusCode as aV, isClientError as aW, isServerError as aX, isSuccess as aY, isValidIp as aZ, isValidIpv4 as a_, type RetryAfterSecondsResult as aa, type RobotsGroup as ab, type RobotsIssue as ac, type RobotsRule as ad, type RobotsValidationResult as ae, STATUS_CODES as af, type SameSiteValue as ag, type SitemapIndexEntry as ah, type SitemapIssue as ai, type SitemapSplitFile as aj, type SitemapUrlEntry as ak, type SitemapValidationResult as al, type SplitSitemapOptions as am, type SplitSitemapResult as an, type StatusCode as ao, type UaDeviceType as ap, type UserAgentInfo as aq, type VaryHeaderEntry as ar, type VaryHeaderResult as as, type XContentTypeOptionsHeader as at, type XContentTypeOptionsParseResult as au, X_CONTENT_TYPE_OPTIONS_HEADER as av, analyzeEmailHeaders as aw, assessContentTypeRisk as ax, buildAcceptLanguage as ay, buildCacheControl as az, type AuthResultEntry as b, parseAcceptLanguage as b0, parseClientHintHeaders as b1, parseContentDisposition as b2, parseContentRangeHeader as b3, parseDnsResponse as b4, parseGeoResponse as b5, parseHar as b6, parseIpv6Address as b7, parsePermissionsPolicy as b8, parsePreferHeader as b9, parseRetryAfterHeader as ba, parseUserAgent as bb, parseVaryHeader as bc, parseXContentTypeOptionsHeader as bd, searchHeaders as be, searchStatusCodes as bf, splitSitemap as bg, statusCodeToText as bh, typeNumberToLabel as bi, validateDomain as bj, validateHeaderName as bk, validateHeaderValue as bl, validateManifest as bm, validateRobotsTxt as bn, validateSitemap as bo, type CacheControlDirective as c, type CacheControlOptions as d, type CacheControlResult as e, type ClientHintDef as f, type ClientHintValueType as g, type ClientHintsBuildResult as h, type ClientHintsParseResult as i, type ContentDispositionBuildOptions as j, type ContentDispositionBuildResult as k, type ContentDispositionParseResult as l, type ContentRangeResult as m, network as n, type ContentTypeRiskResult as o, type ContentTypeSniffRisk as p, type CookieAttributes as q, type CookieCheckResult as r, type DnsRecord as s, type DnsRecordType as t, type DnsResponse as u, type EmailHeaderField as v, type HarEntry as w, type HarParseResult as x, type HarSummary as y, type HeaderCategory as z };
@@ -2919,6 +2919,38 @@ function parsePreferHeader(raw) {
2919
2919
  const headerValue = formatPreferPreferences(preferences);
2920
2920
  return { header: `Prefer: ${headerValue}`, headerValue, preferences };
2921
2921
  }
2922
+ function buildRetryAfterHeader(input) {
2923
+ const { seconds, date } = input;
2924
+ const hasSeconds = seconds !== void 0;
2925
+ const hasDate = date !== void 0 && date !== "";
2926
+ if (hasSeconds && hasDate) return { error: "Provide either seconds or date, not both" };
2927
+ if (!hasSeconds && !hasDate) return { error: "seconds or date is required" };
2928
+ if (hasSeconds) {
2929
+ if (typeof seconds !== "number" || !Number.isFinite(seconds) || !Number.isInteger(seconds) || seconds < 0) {
2930
+ return { error: "seconds must be a non-negative integer" };
2931
+ }
2932
+ return { header: `Retry-After: ${seconds}`, headerValue: String(seconds), type: "seconds", seconds };
2933
+ }
2934
+ const parsed = new Date(date);
2935
+ if (Number.isNaN(parsed.getTime())) return { error: "date must be a valid date/time string" };
2936
+ const httpDate = parsed.toUTCString();
2937
+ return { header: `Retry-After: ${httpDate}`, headerValue: httpDate, type: "http-date", httpDate, iso: parsed.toISOString() };
2938
+ }
2939
+ function parseRetryAfterHeader(raw) {
2940
+ if (!raw || raw.trim() === "") return { error: "Input is empty" };
2941
+ const value = raw.trim().replace(/^retry-after:\s*/i, "").trim();
2942
+ if (value === "") return { error: "Input is empty" };
2943
+ if (/^\d+$/.test(value)) {
2944
+ const seconds = parseInt(value, 10);
2945
+ return { header: `Retry-After: ${seconds}`, headerValue: String(seconds), type: "seconds", seconds };
2946
+ }
2947
+ const parsed = new Date(value);
2948
+ if (Number.isNaN(parsed.getTime())) {
2949
+ return { error: "Value is neither a non-negative integer (seconds) nor a valid HTTP-date" };
2950
+ }
2951
+ const httpDate = parsed.toUTCString();
2952
+ return { header: `Retry-After: ${httpDate}`, headerValue: httpDate, type: "http-date", httpDate, iso: parsed.toISOString() };
2953
+ }
2922
2954
 
2923
2955
  exports.CLIENT_HINTS = CLIENT_HINTS;
2924
2956
  exports.DNS_RECORD_TYPES = DNS_RECORD_TYPES;
@@ -2942,6 +2974,7 @@ exports.buildPermissionsPolicy = buildPermissionsPolicy;
2942
2974
  exports.buildPreferHeader = buildPreferHeader;
2943
2975
  exports.buildRangeHeader = buildRangeHeader;
2944
2976
  exports.buildReferrerPolicy = buildReferrerPolicy;
2977
+ exports.buildRetryAfterHeader = buildRetryAfterHeader;
2945
2978
  exports.buildVaryHeader = buildVaryHeader;
2946
2979
  exports.buildXContentTypeOptionsHeader = buildXContentTypeOptionsHeader;
2947
2980
  exports.checkSetCookieHeader = checkSetCookieHeader;
@@ -2969,6 +3002,7 @@ exports.parseHar = parseHar;
2969
3002
  exports.parseIpv6Address = parseIpv6Address;
2970
3003
  exports.parsePermissionsPolicy = parsePermissionsPolicy;
2971
3004
  exports.parsePreferHeader = parsePreferHeader;
3005
+ exports.parseRetryAfterHeader = parseRetryAfterHeader;
2972
3006
  exports.parseUserAgent = parseUserAgent;
2973
3007
  exports.parseVaryHeader = parseVaryHeader;
2974
3008
  exports.parseXContentTypeOptionsHeader = parseXContentTypeOptionsHeader;
@@ -1 +1 @@
1
- export { A as AcceptLanguageEntry, a as AcceptLanguageResult, b as AuthResultEntry, B as BuildRangeHeaderOptions, C as CLIENT_HINTS, c as CacheControlDirective, d as CacheControlOptions, e as CacheControlResult, f as ClientHintDef, g as ClientHintValueType, h as ClientHintsBuildResult, i as ClientHintsParseResult, j as ContentDispositionBuildOptions, k as ContentDispositionBuildResult, l as ContentDispositionParseResult, m as ContentRangeResult, o as ContentTypeRiskResult, p as ContentTypeSniffRisk, q as CookieAttributes, r as CookieCheckResult, D as DNS_RECORD_TYPES, s as DnsRecord, t as DnsRecordType, u as DnsResponse, E as EmailHeaderAnalysis, v as EmailHeaderField, G as GeoResult, H as HTTP_HEADERS, w as HarEntry, x as HarParseResult, y as HarSummary, z as HeaderCategory, F as HttpHeader, I as Ipv6AddressType, J as Ipv6ParseResult, L as LINK_REL_VALUES, K as LinkHeaderEntry, M as LinkHeaderEntryInput, N as LinkHeaderResult, O as LinkRel, P as ManifestIconInfo, Q as ManifestIssue, R as ManifestValidationResult, S as PERMISSIONS_POLICY_FEATURES, T as ParsedClientHint, U as ParsedDnsResult, V as ParsedGeoResult, W as PermissionsPolicyDirective, X as PermissionsPolicyFeatureInput, Y as PermissionsPolicyResult, Z as PreferParameter, _ as PreferPreference, $ as PreferResult, a0 as REFERRER_POLICY_VALUES, a1 as RangeEntry, a2 as RangeEntryInput, a3 as RangeHeaderResult, a4 as ReceivedHop, a5 as ReferrerPolicyEntry, a6 as ReferrerPolicyResult, a7 as ReferrerPolicyValue, a8 as RobotsGroup, a9 as RobotsIssue, aa as RobotsRule, ab as RobotsValidationResult, ac as STATUS_CODES, ad as SameSiteValue, ae as SitemapIndexEntry, af as SitemapIssue, ag as SitemapSplitFile, ah as SitemapUrlEntry, ai as SitemapValidationResult, aj as SplitSitemapOptions, ak as SplitSitemapResult, al as StatusCode, am as UaDeviceType, an as UserAgentInfo, ao as VaryHeaderEntry, ap as VaryHeaderResult, aq as XContentTypeOptionsHeader, ar as XContentTypeOptionsParseResult, as as X_CONTENT_TYPE_OPTIONS_HEADER, at as analyzeEmailHeaders, au as assessContentTypeRisk, av as buildAcceptLanguage, aw as buildCacheControl, ax as buildClientHints, ay as buildContentDisposition, az as buildDnsQueryUrl, aA as buildGeoUrl, aB as buildLinkHeader, aC as buildMapUrl, aD as buildPermissionsPolicy, aE as buildPreferHeader, aF as buildRangeHeader, aG as buildReferrerPolicy, aH as buildVaryHeader, aI as buildXContentTypeOptionsHeader, aJ as checkSetCookieHeader, aK as countryCodeToFlag, aL as formatCoordinates, aM as formatTtl, aN as getByCategory, aO as getHeader, aP as getHeadersByCategory, aQ as getStatusByCategory, aR as getStatusCode, aS as isClientError, aT as isServerError, aU as isSuccess, aV as isValidIp, aW as isValidIpv4, aX as isValidIpv6, aY as parseAcceptLanguage, aZ as parseClientHintHeaders, a_ as parseContentDisposition, a$ as parseContentRangeHeader, b0 as parseDnsResponse, b1 as parseGeoResponse, b2 as parseHar, b3 as parseIpv6Address, b4 as parsePermissionsPolicy, b5 as parsePreferHeader, b6 as parseUserAgent, b7 as parseVaryHeader, b8 as parseXContentTypeOptionsHeader, b9 as searchHeaders, ba as searchStatusCodes, bb as splitSitemap, bc as statusCodeToText, bd as typeNumberToLabel, be as validateDomain, bf as validateHeaderName, bg as validateHeaderValue, bh as validateManifest, bi as validateRobotsTxt, bj as validateSitemap } from '../network-fDfM1_L6.cjs';
1
+ export { A as AcceptLanguageEntry, a as AcceptLanguageResult, b as AuthResultEntry, B as BuildRangeHeaderOptions, C as CLIENT_HINTS, c as CacheControlDirective, d as CacheControlOptions, e as CacheControlResult, f as ClientHintDef, g as ClientHintValueType, h as ClientHintsBuildResult, i as ClientHintsParseResult, j as ContentDispositionBuildOptions, k as ContentDispositionBuildResult, l as ContentDispositionParseResult, m as ContentRangeResult, o as ContentTypeRiskResult, p as ContentTypeSniffRisk, q as CookieAttributes, r as CookieCheckResult, D as DNS_RECORD_TYPES, s as DnsRecord, t as DnsRecordType, u as DnsResponse, E as EmailHeaderAnalysis, v as EmailHeaderField, G as GeoResult, H as HTTP_HEADERS, w as HarEntry, x as HarParseResult, y as HarSummary, z as HeaderCategory, F as HttpHeader, I as Ipv6AddressType, J as Ipv6ParseResult, L as LINK_REL_VALUES, K as LinkHeaderEntry, M as LinkHeaderEntryInput, N as LinkHeaderResult, O as LinkRel, P as ManifestIconInfo, Q as ManifestIssue, R as ManifestValidationResult, S as PERMISSIONS_POLICY_FEATURES, T as ParsedClientHint, U as ParsedDnsResult, V as ParsedGeoResult, W as PermissionsPolicyDirective, X as PermissionsPolicyFeatureInput, Y as PermissionsPolicyResult, Z as PreferParameter, _ as PreferPreference, $ as PreferResult, a0 as REFERRER_POLICY_VALUES, a1 as RangeEntry, a2 as RangeEntryInput, a3 as RangeHeaderResult, a4 as ReceivedHop, a5 as ReferrerPolicyEntry, a6 as ReferrerPolicyResult, a7 as ReferrerPolicyValue, a8 as RetryAfterDateResult, a9 as RetryAfterResult, aa as RetryAfterSecondsResult, ab as RobotsGroup, ac as RobotsIssue, ad as RobotsRule, ae as RobotsValidationResult, af as STATUS_CODES, ag as SameSiteValue, ah as SitemapIndexEntry, ai as SitemapIssue, aj as SitemapSplitFile, ak as SitemapUrlEntry, al as SitemapValidationResult, am as SplitSitemapOptions, an as SplitSitemapResult, ao as StatusCode, ap as UaDeviceType, aq as UserAgentInfo, ar as VaryHeaderEntry, as as VaryHeaderResult, at as XContentTypeOptionsHeader, au as XContentTypeOptionsParseResult, av as X_CONTENT_TYPE_OPTIONS_HEADER, aw as analyzeEmailHeaders, ax as assessContentTypeRisk, ay as buildAcceptLanguage, az as buildCacheControl, aA as buildClientHints, aB as buildContentDisposition, aC as buildDnsQueryUrl, aD as buildGeoUrl, aE as buildLinkHeader, aF as buildMapUrl, aG as buildPermissionsPolicy, aH as buildPreferHeader, aI as buildRangeHeader, aJ as buildReferrerPolicy, aK as buildRetryAfterHeader, aL as buildVaryHeader, aM as buildXContentTypeOptionsHeader, aN as checkSetCookieHeader, aO as countryCodeToFlag, aP as formatCoordinates, aQ as formatTtl, aR as getByCategory, aS as getHeader, aT as getHeadersByCategory, aU as getStatusByCategory, aV as getStatusCode, aW as isClientError, aX as isServerError, aY as isSuccess, aZ as isValidIp, a_ as isValidIpv4, a$ as isValidIpv6, b0 as parseAcceptLanguage, b1 as parseClientHintHeaders, b2 as parseContentDisposition, b3 as parseContentRangeHeader, b4 as parseDnsResponse, b5 as parseGeoResponse, b6 as parseHar, b7 as parseIpv6Address, b8 as parsePermissionsPolicy, b9 as parsePreferHeader, ba as parseRetryAfterHeader, bb as parseUserAgent, bc as parseVaryHeader, bd as parseXContentTypeOptionsHeader, be as searchHeaders, bf as searchStatusCodes, bg as splitSitemap, bh as statusCodeToText, bi as typeNumberToLabel, bj as validateDomain, bk as validateHeaderName, bl as validateHeaderValue, bm as validateManifest, bn as validateRobotsTxt, bo as validateSitemap } from '../network-CXt69chQ.cjs';
@@ -1 +1 @@
1
- export { A as AcceptLanguageEntry, a as AcceptLanguageResult, b as AuthResultEntry, B as BuildRangeHeaderOptions, C as CLIENT_HINTS, c as CacheControlDirective, d as CacheControlOptions, e as CacheControlResult, f as ClientHintDef, g as ClientHintValueType, h as ClientHintsBuildResult, i as ClientHintsParseResult, j as ContentDispositionBuildOptions, k as ContentDispositionBuildResult, l as ContentDispositionParseResult, m as ContentRangeResult, o as ContentTypeRiskResult, p as ContentTypeSniffRisk, q as CookieAttributes, r as CookieCheckResult, D as DNS_RECORD_TYPES, s as DnsRecord, t as DnsRecordType, u as DnsResponse, E as EmailHeaderAnalysis, v as EmailHeaderField, G as GeoResult, H as HTTP_HEADERS, w as HarEntry, x as HarParseResult, y as HarSummary, z as HeaderCategory, F as HttpHeader, I as Ipv6AddressType, J as Ipv6ParseResult, L as LINK_REL_VALUES, K as LinkHeaderEntry, M as LinkHeaderEntryInput, N as LinkHeaderResult, O as LinkRel, P as ManifestIconInfo, Q as ManifestIssue, R as ManifestValidationResult, S as PERMISSIONS_POLICY_FEATURES, T as ParsedClientHint, U as ParsedDnsResult, V as ParsedGeoResult, W as PermissionsPolicyDirective, X as PermissionsPolicyFeatureInput, Y as PermissionsPolicyResult, Z as PreferParameter, _ as PreferPreference, $ as PreferResult, a0 as REFERRER_POLICY_VALUES, a1 as RangeEntry, a2 as RangeEntryInput, a3 as RangeHeaderResult, a4 as ReceivedHop, a5 as ReferrerPolicyEntry, a6 as ReferrerPolicyResult, a7 as ReferrerPolicyValue, a8 as RobotsGroup, a9 as RobotsIssue, aa as RobotsRule, ab as RobotsValidationResult, ac as STATUS_CODES, ad as SameSiteValue, ae as SitemapIndexEntry, af as SitemapIssue, ag as SitemapSplitFile, ah as SitemapUrlEntry, ai as SitemapValidationResult, aj as SplitSitemapOptions, ak as SplitSitemapResult, al as StatusCode, am as UaDeviceType, an as UserAgentInfo, ao as VaryHeaderEntry, ap as VaryHeaderResult, aq as XContentTypeOptionsHeader, ar as XContentTypeOptionsParseResult, as as X_CONTENT_TYPE_OPTIONS_HEADER, at as analyzeEmailHeaders, au as assessContentTypeRisk, av as buildAcceptLanguage, aw as buildCacheControl, ax as buildClientHints, ay as buildContentDisposition, az as buildDnsQueryUrl, aA as buildGeoUrl, aB as buildLinkHeader, aC as buildMapUrl, aD as buildPermissionsPolicy, aE as buildPreferHeader, aF as buildRangeHeader, aG as buildReferrerPolicy, aH as buildVaryHeader, aI as buildXContentTypeOptionsHeader, aJ as checkSetCookieHeader, aK as countryCodeToFlag, aL as formatCoordinates, aM as formatTtl, aN as getByCategory, aO as getHeader, aP as getHeadersByCategory, aQ as getStatusByCategory, aR as getStatusCode, aS as isClientError, aT as isServerError, aU as isSuccess, aV as isValidIp, aW as isValidIpv4, aX as isValidIpv6, aY as parseAcceptLanguage, aZ as parseClientHintHeaders, a_ as parseContentDisposition, a$ as parseContentRangeHeader, b0 as parseDnsResponse, b1 as parseGeoResponse, b2 as parseHar, b3 as parseIpv6Address, b4 as parsePermissionsPolicy, b5 as parsePreferHeader, b6 as parseUserAgent, b7 as parseVaryHeader, b8 as parseXContentTypeOptionsHeader, b9 as searchHeaders, ba as searchStatusCodes, bb as splitSitemap, bc as statusCodeToText, bd as typeNumberToLabel, be as validateDomain, bf as validateHeaderName, bg as validateHeaderValue, bh as validateManifest, bi as validateRobotsTxt, bj as validateSitemap } from '../network-fDfM1_L6.js';
1
+ export { A as AcceptLanguageEntry, a as AcceptLanguageResult, b as AuthResultEntry, B as BuildRangeHeaderOptions, C as CLIENT_HINTS, c as CacheControlDirective, d as CacheControlOptions, e as CacheControlResult, f as ClientHintDef, g as ClientHintValueType, h as ClientHintsBuildResult, i as ClientHintsParseResult, j as ContentDispositionBuildOptions, k as ContentDispositionBuildResult, l as ContentDispositionParseResult, m as ContentRangeResult, o as ContentTypeRiskResult, p as ContentTypeSniffRisk, q as CookieAttributes, r as CookieCheckResult, D as DNS_RECORD_TYPES, s as DnsRecord, t as DnsRecordType, u as DnsResponse, E as EmailHeaderAnalysis, v as EmailHeaderField, G as GeoResult, H as HTTP_HEADERS, w as HarEntry, x as HarParseResult, y as HarSummary, z as HeaderCategory, F as HttpHeader, I as Ipv6AddressType, J as Ipv6ParseResult, L as LINK_REL_VALUES, K as LinkHeaderEntry, M as LinkHeaderEntryInput, N as LinkHeaderResult, O as LinkRel, P as ManifestIconInfo, Q as ManifestIssue, R as ManifestValidationResult, S as PERMISSIONS_POLICY_FEATURES, T as ParsedClientHint, U as ParsedDnsResult, V as ParsedGeoResult, W as PermissionsPolicyDirective, X as PermissionsPolicyFeatureInput, Y as PermissionsPolicyResult, Z as PreferParameter, _ as PreferPreference, $ as PreferResult, a0 as REFERRER_POLICY_VALUES, a1 as RangeEntry, a2 as RangeEntryInput, a3 as RangeHeaderResult, a4 as ReceivedHop, a5 as ReferrerPolicyEntry, a6 as ReferrerPolicyResult, a7 as ReferrerPolicyValue, a8 as RetryAfterDateResult, a9 as RetryAfterResult, aa as RetryAfterSecondsResult, ab as RobotsGroup, ac as RobotsIssue, ad as RobotsRule, ae as RobotsValidationResult, af as STATUS_CODES, ag as SameSiteValue, ah as SitemapIndexEntry, ai as SitemapIssue, aj as SitemapSplitFile, ak as SitemapUrlEntry, al as SitemapValidationResult, am as SplitSitemapOptions, an as SplitSitemapResult, ao as StatusCode, ap as UaDeviceType, aq as UserAgentInfo, ar as VaryHeaderEntry, as as VaryHeaderResult, at as XContentTypeOptionsHeader, au as XContentTypeOptionsParseResult, av as X_CONTENT_TYPE_OPTIONS_HEADER, aw as analyzeEmailHeaders, ax as assessContentTypeRisk, ay as buildAcceptLanguage, az as buildCacheControl, aA as buildClientHints, aB as buildContentDisposition, aC as buildDnsQueryUrl, aD as buildGeoUrl, aE as buildLinkHeader, aF as buildMapUrl, aG as buildPermissionsPolicy, aH as buildPreferHeader, aI as buildRangeHeader, aJ as buildReferrerPolicy, aK as buildRetryAfterHeader, aL as buildVaryHeader, aM as buildXContentTypeOptionsHeader, aN as checkSetCookieHeader, aO as countryCodeToFlag, aP as formatCoordinates, aQ as formatTtl, aR as getByCategory, aS as getHeader, aT as getHeadersByCategory, aU as getStatusByCategory, aV as getStatusCode, aW as isClientError, aX as isServerError, aY as isSuccess, aZ as isValidIp, a_ as isValidIpv4, a$ as isValidIpv6, b0 as parseAcceptLanguage, b1 as parseClientHintHeaders, b2 as parseContentDisposition, b3 as parseContentRangeHeader, b4 as parseDnsResponse, b5 as parseGeoResponse, b6 as parseHar, b7 as parseIpv6Address, b8 as parsePermissionsPolicy, b9 as parsePreferHeader, ba as parseRetryAfterHeader, bb as parseUserAgent, bc as parseVaryHeader, bd as parseXContentTypeOptionsHeader, be as searchHeaders, bf as searchStatusCodes, bg as splitSitemap, bh as statusCodeToText, bi as typeNumberToLabel, bj as validateDomain, bk as validateHeaderName, bl as validateHeaderValue, bm as validateManifest, bn as validateRobotsTxt, bo as validateSitemap } from '../network-CXt69chQ.js';
@@ -1,2 +1,2 @@
1
- export { CLIENT_HINTS, DNS_RECORD_TYPES, HTTP_HEADERS, LINK_REL_VALUES, PERMISSIONS_POLICY_FEATURES, REFERRER_POLICY_VALUES, STATUS_CODES, X_CONTENT_TYPE_OPTIONS_HEADER, analyzeEmailHeaders, assessContentTypeRisk, buildAcceptLanguage, buildCacheControl, buildClientHints, buildContentDisposition, buildDnsQueryUrl, buildGeoUrl, buildLinkHeader, buildMapUrl, buildPermissionsPolicy, buildPreferHeader, buildRangeHeader, buildReferrerPolicy, buildVaryHeader, buildXContentTypeOptionsHeader, checkSetCookieHeader, countryCodeToFlag, formatCoordinates, formatTtl, getByCategory, getHeader, getHeadersByCategory, getStatusByCategory, getStatusCode, isClientError, isServerError, isSuccess, isValidIp, isValidIpv4, isValidIpv6, parseAcceptLanguage, parseClientHintHeaders, parseContentDisposition, parseContentRangeHeader, parseDnsResponse, parseGeoResponse, parseHar, parseIpv6Address, parsePermissionsPolicy, parsePreferHeader, parseUserAgent, parseVaryHeader, parseXContentTypeOptionsHeader, searchHeaders, searchStatusCodes, splitSitemap, statusCodeToText, typeNumberToLabel, validateDomain, validateHeaderName, validateHeaderValue, validateManifest, validateRobotsTxt, validateSitemap } from '../chunk-3QU46YFP.js';
1
+ export { CLIENT_HINTS, DNS_RECORD_TYPES, HTTP_HEADERS, LINK_REL_VALUES, PERMISSIONS_POLICY_FEATURES, REFERRER_POLICY_VALUES, STATUS_CODES, X_CONTENT_TYPE_OPTIONS_HEADER, analyzeEmailHeaders, assessContentTypeRisk, buildAcceptLanguage, buildCacheControl, buildClientHints, buildContentDisposition, buildDnsQueryUrl, buildGeoUrl, buildLinkHeader, buildMapUrl, buildPermissionsPolicy, buildPreferHeader, buildRangeHeader, buildReferrerPolicy, buildRetryAfterHeader, buildVaryHeader, buildXContentTypeOptionsHeader, checkSetCookieHeader, countryCodeToFlag, formatCoordinates, formatTtl, getByCategory, getHeader, getHeadersByCategory, getStatusByCategory, getStatusCode, isClientError, isServerError, isSuccess, isValidIp, isValidIpv4, isValidIpv6, parseAcceptLanguage, parseClientHintHeaders, parseContentDisposition, parseContentRangeHeader, parseDnsResponse, parseGeoResponse, parseHar, parseIpv6Address, parsePermissionsPolicy, parsePreferHeader, parseRetryAfterHeader, parseUserAgent, parseVaryHeader, parseXContentTypeOptionsHeader, searchHeaders, searchStatusCodes, splitSitemap, statusCodeToText, typeNumberToLabel, validateDomain, validateHeaderName, validateHeaderValue, validateManifest, validateRobotsTxt, validateSitemap } from '../chunk-2WT347WO.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -2211,6 +2211,41 @@ function calculateBlendedLoanRate(loans) {
2211
2211
  totalAnnualInterest: round22(totalMonthlyInterest * 12)
2212
2212
  };
2213
2213
  }
2214
+ function calculateFreelancerRate(input) {
2215
+ const { targetAnnualIncome, billableHoursPerWeek, weeksPerYear } = input;
2216
+ const annualOverheadCosts = input.annualOverheadCosts ?? 0;
2217
+ const profitMarginPercent = input.profitMarginPercent ?? 0;
2218
+ if (!Number.isFinite(targetAnnualIncome) || targetAnnualIncome < 0) {
2219
+ return { error: "targetAnnualIncome must be a finite, non-negative number" };
2220
+ }
2221
+ if (!Number.isFinite(billableHoursPerWeek) || billableHoursPerWeek <= 0 || billableHoursPerWeek > 168) {
2222
+ return { error: "billableHoursPerWeek must be a finite number greater than zero and at most 168" };
2223
+ }
2224
+ if (!Number.isFinite(weeksPerYear) || weeksPerYear <= 0 || weeksPerYear > 52) {
2225
+ return { error: "weeksPerYear must be a finite number greater than zero and at most 52" };
2226
+ }
2227
+ if (!Number.isFinite(annualOverheadCosts) || annualOverheadCosts < 0) {
2228
+ return { error: "annualOverheadCosts must be a finite, non-negative number" };
2229
+ }
2230
+ if (!Number.isFinite(profitMarginPercent) || profitMarginPercent < 0) {
2231
+ return { error: "profitMarginPercent must be a finite, non-negative number" };
2232
+ }
2233
+ const round22 = (n) => Math.round(n * 100) / 100;
2234
+ const annualBillableHours = billableHoursPerWeek * weeksPerYear;
2235
+ const baseRevenueNeeded = targetAnnualIncome + annualOverheadCosts;
2236
+ const requiredAnnualRevenue = baseRevenueNeeded * (1 + profitMarginPercent / 100);
2237
+ const hourlyRate = requiredAnnualRevenue / annualBillableHours;
2238
+ return {
2239
+ targetAnnualIncome: round22(targetAnnualIncome),
2240
+ annualOverheadCosts: round22(annualOverheadCosts),
2241
+ profitMarginPercent: round22(profitMarginPercent),
2242
+ annualBillableHours: round22(annualBillableHours),
2243
+ requiredAnnualRevenue: round22(requiredAnnualRevenue),
2244
+ hourlyRate: round22(hourlyRate),
2245
+ dailyRate: round22(hourlyRate * 8),
2246
+ monthlyRevenueTarget: round22(requiredAnnualRevenue / 12)
2247
+ };
2248
+ }
2214
2249
 
2215
2250
  exports.BASE_LABELS = BASE_LABELS;
2216
2251
  exports.BASE_PREFIXES = BASE_PREFIXES;
@@ -2242,6 +2277,7 @@ exports.calculateDebtToIncomeRatio = calculateDebtToIncomeRatio;
2242
2277
  exports.calculateDepreciationSchedule = calculateDepreciationSchedule;
2243
2278
  exports.calculateDiscount = calculateDiscount;
2244
2279
  exports.calculateEmi = calculateEmi;
2280
+ exports.calculateFreelancerRate = calculateFreelancerRate;
2245
2281
  exports.calculateGpa = calculateGpa;
2246
2282
  exports.calculateLoan = calculateLoan;
2247
2283
  exports.calculateMarginMarkup = calculateMarginMarkup;
@@ -1 +1 @@
1
- export { A as AmortizationRow, a as AprApyDirection, b as AprApyResult, c as AspectRatioResult, B as BASE_LABELS, d as BASE_PREFIXES, e as BYTE_UNITS, f as BarcodeFormat, g as BarcodeValidationResult, h as BaseConvertResult, i as BlendedLoanRateResult, j as BreakEvenInput, k as BreakEvenResult, l as ByteConvertResult, m as ByteUnit, C as COMMON_CURRENCIES, n as COMMON_LOCALES, o as COMMON_PERMISSIONS, p as COMMON_RATIOS, q as COMMON_SIZES, r as COMMON_TAX_RATES, s as COMMON_TIP_PERCENTAGES, t as COMMON_VIEWPORTS, v as CardValidationResult, w as CashBreakdownResult, x as CashChangeResult, y as CashDenominationItem, z as CashRoundingMode, D as CashRoundingResult, E as CdMaturityResult, F as CompareUnitPricesResult, G as CompoundInterestResult, H as CompoundYearRow, I as CreditAccountInput, J as CreditAccountResult, K as CreditUtilizationResult, L as DebtItemInput, M as DebtItemResult, N as DebtToIncomeRatioResult, O as DepreciationMethod, P as DepreciationResult, Q as DepreciationYear, R as Dimensions, S as DiscountField, T as DiscountInput, U as DiscountResult, V as DtiTier, W as EmiResult, X as EmiTenureUnit, Y as EmiYearlyBreakdownRow, Z as FilePermissions, _ as FormatOptions, $ as GPA_GRADE_POINTS, a0 as GpaCourse, a1 as GpaCourseResult, a2 as GpaResult, a3 as IbanValidationResult, a4 as IpConversion, a5 as IsbnFormat, a6 as IsbnResult, a7 as LoanBalanceInput, a8 as LoanBalanceResult, a9 as LoanResult, aa as MarginMarkupField, ab as MarginMarkupInput, ac as MarginMarkupResult, ad as MovingAveragePoint, ae as MovingAverageResult, af as NotationStyle, ag as NumberBase, ah as PaybackPeriodInput, ai as PaybackPeriodResult, aj as PercentChangeDirection, ak as PercentageChangeResult, al as Permission, am as PxConvertResult, an as RoiInput, ao as RoiResult, ap as RuleOf72Direction, aq as RuleOf72Result, ar as SavingsGoalInput, as as SavingsGoalMode, at as SavingsGoalResult, au as SemverVersion, av as SimpleInterestResult, aw as SubnetInfo, ax as SuccessiveDiscountResult, ay as SuccessiveDiscountStep, az as TaxDirection, aA as TaxResult, aB as TimeValueDirection, aC as TimeValueResult, aD as TipSplitResult, aE as USD_DENOMINATIONS, aF as UnitPriceItem, aG as UnitPriceResult, aH as UtilizationTier, aI as VideoBitrateInput, aJ as VideoBitrateMode, aK as VideoBitrateResult, aL as ViewportConvertResult, aM as applySuccessiveDiscounts, aN as autoFormat, aO as bumpVersion, aP as calcAspectRatio, aQ as calcSubnet, aR as calculateBlendedLoanRate, aS as calculateBreakEven, aT as calculateCashBreakdown, aU as calculateCashRounding, aV as calculateCdMaturity, aW as calculateChange, aX as calculateCompoundInterest, aY as calculateCreditUtilization, aZ as calculateDebtToIncomeRatio, a_ as calculateDepreciationSchedule, a$ as calculateDiscount, b0 as calculateEmi, b1 as calculateGpa, b2 as calculateLoan, b3 as calculateMarginMarkup, b4 as calculateMovingAverages, b5 as calculatePaybackPeriod, b6 as calculatePercentageChange, b7 as calculateRoi, b8 as calculateRuleOf72, b9 as calculateSavingsGoal, ba as calculateSimpleInterest, bb as calculateTax, bc as calculateTimeValue, bd as calculateTipSplit, be as calculateVideoBitrate, bf as compareSemver, bg as compareUnitPrices, bh as convert, bi as convertAprApy, bj as convertBytes, bk as convertIp, bl as coverBox, bm as decimalToIp, bn as decimalToIpCidr, bo as describePermissions, bp as fitIntoBox, bq as formatNumber, br as formatValue, bs as formatVwValue, bt as formatWithSeparator, bu as gcd, bv as ipFromBinary, bw as ipFromDecimal, bx as ipFromHex, by as ipToBinary, bz as ipToDecimal, bA as ipToDecimalCidr, bB as ipToHex, bC as ipToOctal, bD as isValid, bE as isValidCidr, bF as isValidIp, bG as isValidIpv4, bH as marginToMarkup, bI as markupToMargin, bJ as octalToPermissions, bK as parseFileSize, bL as parseInput, bM as parseNumberString, bN as parseSemver, bO as permissionsToChmod, bP as permissionsToOctal, bQ as permissionsToSymbolic, bR as ptToPx, bS as pxToAll, bT as pxToViewport, bU as remToPx, bV as satisfiesRange, bW as scaleByHeight, bX as scaleByWidth, bY as sortVersions, bZ as splitSubnet, b_ as symbolicToPermissions, b$ as validateBarcode, c0 as validateCardNumber, c1 as validateIban, c2 as validateIsbn, c3 as viewportToPx } from '../units-BM9GkUZW.cjs';
1
+ export { A as AmortizationRow, a as AprApyDirection, b as AprApyResult, c as AspectRatioResult, B as BASE_LABELS, d as BASE_PREFIXES, e as BYTE_UNITS, f as BarcodeFormat, g as BarcodeValidationResult, h as BaseConvertResult, i as BlendedLoanRateResult, j as BreakEvenInput, k as BreakEvenResult, l as ByteConvertResult, m as ByteUnit, C as COMMON_CURRENCIES, n as COMMON_LOCALES, o as COMMON_PERMISSIONS, p as COMMON_RATIOS, q as COMMON_SIZES, r as COMMON_TAX_RATES, s as COMMON_TIP_PERCENTAGES, t as COMMON_VIEWPORTS, v as CardValidationResult, w as CashBreakdownResult, x as CashChangeResult, y as CashDenominationItem, z as CashRoundingMode, D as CashRoundingResult, E as CdMaturityResult, F as CompareUnitPricesResult, G as CompoundInterestResult, H as CompoundYearRow, I as CreditAccountInput, J as CreditAccountResult, K as CreditUtilizationResult, L as DebtItemInput, M as DebtItemResult, N as DebtToIncomeRatioResult, O as DepreciationMethod, P as DepreciationResult, Q as DepreciationYear, R as Dimensions, S as DiscountField, T as DiscountInput, U as DiscountResult, V as DtiTier, W as EmiResult, X as EmiTenureUnit, Y as EmiYearlyBreakdownRow, Z as FilePermissions, _ as FormatOptions, $ as FreelancerRateInput, a0 as FreelancerRateResult, a1 as GPA_GRADE_POINTS, a2 as GpaCourse, a3 as GpaCourseResult, a4 as GpaResult, a5 as IbanValidationResult, a6 as IpConversion, a7 as IsbnFormat, a8 as IsbnResult, a9 as LoanBalanceInput, aa as LoanBalanceResult, ab as LoanResult, ac as MarginMarkupField, ad as MarginMarkupInput, ae as MarginMarkupResult, af as MovingAveragePoint, ag as MovingAverageResult, ah as NotationStyle, ai as NumberBase, aj as PaybackPeriodInput, ak as PaybackPeriodResult, al as PercentChangeDirection, am as PercentageChangeResult, an as Permission, ao as PxConvertResult, ap as RoiInput, aq as RoiResult, ar as RuleOf72Direction, as as RuleOf72Result, at as SavingsGoalInput, au as SavingsGoalMode, av as SavingsGoalResult, aw as SemverVersion, ax as SimpleInterestResult, ay as SubnetInfo, az as SuccessiveDiscountResult, aA as SuccessiveDiscountStep, aB as TaxDirection, aC as TaxResult, aD as TimeValueDirection, aE as TimeValueResult, aF as TipSplitResult, aG as USD_DENOMINATIONS, aH as UnitPriceItem, aI as UnitPriceResult, aJ as UtilizationTier, aK as VideoBitrateInput, aL as VideoBitrateMode, aM as VideoBitrateResult, aN as ViewportConvertResult, aO as applySuccessiveDiscounts, aP as autoFormat, aQ as bumpVersion, aR as calcAspectRatio, aS as calcSubnet, aT as calculateBlendedLoanRate, aU as calculateBreakEven, aV as calculateCashBreakdown, aW as calculateCashRounding, aX as calculateCdMaturity, aY as calculateChange, aZ as calculateCompoundInterest, a_ as calculateCreditUtilization, a$ as calculateDebtToIncomeRatio, b0 as calculateDepreciationSchedule, b1 as calculateDiscount, b2 as calculateEmi, b3 as calculateFreelancerRate, b4 as calculateGpa, b5 as calculateLoan, b6 as calculateMarginMarkup, b7 as calculateMovingAverages, b8 as calculatePaybackPeriod, b9 as calculatePercentageChange, ba as calculateRoi, bb as calculateRuleOf72, bc as calculateSavingsGoal, bd as calculateSimpleInterest, be as calculateTax, bf as calculateTimeValue, bg as calculateTipSplit, bh as calculateVideoBitrate, bi as compareSemver, bj as compareUnitPrices, bk as convert, bl as convertAprApy, bm as convertBytes, bn as convertIp, bo as coverBox, bp as decimalToIp, bq as decimalToIpCidr, br as describePermissions, bs as fitIntoBox, bt as formatNumber, bu as formatValue, bv as formatVwValue, bw as formatWithSeparator, bx as gcd, by as ipFromBinary, bz as ipFromDecimal, bA as ipFromHex, bB as ipToBinary, bC as ipToDecimal, bD as ipToDecimalCidr, bE as ipToHex, bF as ipToOctal, bG as isValid, bH as isValidCidr, bI as isValidIp, bJ as isValidIpv4, bK as marginToMarkup, bL as markupToMargin, bM as octalToPermissions, bN as parseFileSize, bO as parseInput, bP as parseNumberString, bQ as parseSemver, bR as permissionsToChmod, bS as permissionsToOctal, bT as permissionsToSymbolic, bU as ptToPx, bV as pxToAll, bW as pxToViewport, bX as remToPx, bY as satisfiesRange, bZ as scaleByHeight, b_ as scaleByWidth, b$ as sortVersions, c0 as splitSubnet, c1 as symbolicToPermissions, c2 as validateBarcode, c3 as validateCardNumber, c4 as validateIban, c5 as validateIsbn, c6 as viewportToPx } from '../units-ClKR6Jxz.cjs';
@@ -1 +1 @@
1
- export { A as AmortizationRow, a as AprApyDirection, b as AprApyResult, c as AspectRatioResult, B as BASE_LABELS, d as BASE_PREFIXES, e as BYTE_UNITS, f as BarcodeFormat, g as BarcodeValidationResult, h as BaseConvertResult, i as BlendedLoanRateResult, j as BreakEvenInput, k as BreakEvenResult, l as ByteConvertResult, m as ByteUnit, C as COMMON_CURRENCIES, n as COMMON_LOCALES, o as COMMON_PERMISSIONS, p as COMMON_RATIOS, q as COMMON_SIZES, r as COMMON_TAX_RATES, s as COMMON_TIP_PERCENTAGES, t as COMMON_VIEWPORTS, v as CardValidationResult, w as CashBreakdownResult, x as CashChangeResult, y as CashDenominationItem, z as CashRoundingMode, D as CashRoundingResult, E as CdMaturityResult, F as CompareUnitPricesResult, G as CompoundInterestResult, H as CompoundYearRow, I as CreditAccountInput, J as CreditAccountResult, K as CreditUtilizationResult, L as DebtItemInput, M as DebtItemResult, N as DebtToIncomeRatioResult, O as DepreciationMethod, P as DepreciationResult, Q as DepreciationYear, R as Dimensions, S as DiscountField, T as DiscountInput, U as DiscountResult, V as DtiTier, W as EmiResult, X as EmiTenureUnit, Y as EmiYearlyBreakdownRow, Z as FilePermissions, _ as FormatOptions, $ as GPA_GRADE_POINTS, a0 as GpaCourse, a1 as GpaCourseResult, a2 as GpaResult, a3 as IbanValidationResult, a4 as IpConversion, a5 as IsbnFormat, a6 as IsbnResult, a7 as LoanBalanceInput, a8 as LoanBalanceResult, a9 as LoanResult, aa as MarginMarkupField, ab as MarginMarkupInput, ac as MarginMarkupResult, ad as MovingAveragePoint, ae as MovingAverageResult, af as NotationStyle, ag as NumberBase, ah as PaybackPeriodInput, ai as PaybackPeriodResult, aj as PercentChangeDirection, ak as PercentageChangeResult, al as Permission, am as PxConvertResult, an as RoiInput, ao as RoiResult, ap as RuleOf72Direction, aq as RuleOf72Result, ar as SavingsGoalInput, as as SavingsGoalMode, at as SavingsGoalResult, au as SemverVersion, av as SimpleInterestResult, aw as SubnetInfo, ax as SuccessiveDiscountResult, ay as SuccessiveDiscountStep, az as TaxDirection, aA as TaxResult, aB as TimeValueDirection, aC as TimeValueResult, aD as TipSplitResult, aE as USD_DENOMINATIONS, aF as UnitPriceItem, aG as UnitPriceResult, aH as UtilizationTier, aI as VideoBitrateInput, aJ as VideoBitrateMode, aK as VideoBitrateResult, aL as ViewportConvertResult, aM as applySuccessiveDiscounts, aN as autoFormat, aO as bumpVersion, aP as calcAspectRatio, aQ as calcSubnet, aR as calculateBlendedLoanRate, aS as calculateBreakEven, aT as calculateCashBreakdown, aU as calculateCashRounding, aV as calculateCdMaturity, aW as calculateChange, aX as calculateCompoundInterest, aY as calculateCreditUtilization, aZ as calculateDebtToIncomeRatio, a_ as calculateDepreciationSchedule, a$ as calculateDiscount, b0 as calculateEmi, b1 as calculateGpa, b2 as calculateLoan, b3 as calculateMarginMarkup, b4 as calculateMovingAverages, b5 as calculatePaybackPeriod, b6 as calculatePercentageChange, b7 as calculateRoi, b8 as calculateRuleOf72, b9 as calculateSavingsGoal, ba as calculateSimpleInterest, bb as calculateTax, bc as calculateTimeValue, bd as calculateTipSplit, be as calculateVideoBitrate, bf as compareSemver, bg as compareUnitPrices, bh as convert, bi as convertAprApy, bj as convertBytes, bk as convertIp, bl as coverBox, bm as decimalToIp, bn as decimalToIpCidr, bo as describePermissions, bp as fitIntoBox, bq as formatNumber, br as formatValue, bs as formatVwValue, bt as formatWithSeparator, bu as gcd, bv as ipFromBinary, bw as ipFromDecimal, bx as ipFromHex, by as ipToBinary, bz as ipToDecimal, bA as ipToDecimalCidr, bB as ipToHex, bC as ipToOctal, bD as isValid, bE as isValidCidr, bF as isValidIp, bG as isValidIpv4, bH as marginToMarkup, bI as markupToMargin, bJ as octalToPermissions, bK as parseFileSize, bL as parseInput, bM as parseNumberString, bN as parseSemver, bO as permissionsToChmod, bP as permissionsToOctal, bQ as permissionsToSymbolic, bR as ptToPx, bS as pxToAll, bT as pxToViewport, bU as remToPx, bV as satisfiesRange, bW as scaleByHeight, bX as scaleByWidth, bY as sortVersions, bZ as splitSubnet, b_ as symbolicToPermissions, b$ as validateBarcode, c0 as validateCardNumber, c1 as validateIban, c2 as validateIsbn, c3 as viewportToPx } from '../units-BM9GkUZW.js';
1
+ export { A as AmortizationRow, a as AprApyDirection, b as AprApyResult, c as AspectRatioResult, B as BASE_LABELS, d as BASE_PREFIXES, e as BYTE_UNITS, f as BarcodeFormat, g as BarcodeValidationResult, h as BaseConvertResult, i as BlendedLoanRateResult, j as BreakEvenInput, k as BreakEvenResult, l as ByteConvertResult, m as ByteUnit, C as COMMON_CURRENCIES, n as COMMON_LOCALES, o as COMMON_PERMISSIONS, p as COMMON_RATIOS, q as COMMON_SIZES, r as COMMON_TAX_RATES, s as COMMON_TIP_PERCENTAGES, t as COMMON_VIEWPORTS, v as CardValidationResult, w as CashBreakdownResult, x as CashChangeResult, y as CashDenominationItem, z as CashRoundingMode, D as CashRoundingResult, E as CdMaturityResult, F as CompareUnitPricesResult, G as CompoundInterestResult, H as CompoundYearRow, I as CreditAccountInput, J as CreditAccountResult, K as CreditUtilizationResult, L as DebtItemInput, M as DebtItemResult, N as DebtToIncomeRatioResult, O as DepreciationMethod, P as DepreciationResult, Q as DepreciationYear, R as Dimensions, S as DiscountField, T as DiscountInput, U as DiscountResult, V as DtiTier, W as EmiResult, X as EmiTenureUnit, Y as EmiYearlyBreakdownRow, Z as FilePermissions, _ as FormatOptions, $ as FreelancerRateInput, a0 as FreelancerRateResult, a1 as GPA_GRADE_POINTS, a2 as GpaCourse, a3 as GpaCourseResult, a4 as GpaResult, a5 as IbanValidationResult, a6 as IpConversion, a7 as IsbnFormat, a8 as IsbnResult, a9 as LoanBalanceInput, aa as LoanBalanceResult, ab as LoanResult, ac as MarginMarkupField, ad as MarginMarkupInput, ae as MarginMarkupResult, af as MovingAveragePoint, ag as MovingAverageResult, ah as NotationStyle, ai as NumberBase, aj as PaybackPeriodInput, ak as PaybackPeriodResult, al as PercentChangeDirection, am as PercentageChangeResult, an as Permission, ao as PxConvertResult, ap as RoiInput, aq as RoiResult, ar as RuleOf72Direction, as as RuleOf72Result, at as SavingsGoalInput, au as SavingsGoalMode, av as SavingsGoalResult, aw as SemverVersion, ax as SimpleInterestResult, ay as SubnetInfo, az as SuccessiveDiscountResult, aA as SuccessiveDiscountStep, aB as TaxDirection, aC as TaxResult, aD as TimeValueDirection, aE as TimeValueResult, aF as TipSplitResult, aG as USD_DENOMINATIONS, aH as UnitPriceItem, aI as UnitPriceResult, aJ as UtilizationTier, aK as VideoBitrateInput, aL as VideoBitrateMode, aM as VideoBitrateResult, aN as ViewportConvertResult, aO as applySuccessiveDiscounts, aP as autoFormat, aQ as bumpVersion, aR as calcAspectRatio, aS as calcSubnet, aT as calculateBlendedLoanRate, aU as calculateBreakEven, aV as calculateCashBreakdown, aW as calculateCashRounding, aX as calculateCdMaturity, aY as calculateChange, aZ as calculateCompoundInterest, a_ as calculateCreditUtilization, a$ as calculateDebtToIncomeRatio, b0 as calculateDepreciationSchedule, b1 as calculateDiscount, b2 as calculateEmi, b3 as calculateFreelancerRate, b4 as calculateGpa, b5 as calculateLoan, b6 as calculateMarginMarkup, b7 as calculateMovingAverages, b8 as calculatePaybackPeriod, b9 as calculatePercentageChange, ba as calculateRoi, bb as calculateRuleOf72, bc as calculateSavingsGoal, bd as calculateSimpleInterest, be as calculateTax, bf as calculateTimeValue, bg as calculateTipSplit, bh as calculateVideoBitrate, bi as compareSemver, bj as compareUnitPrices, bk as convert, bl as convertAprApy, bm as convertBytes, bn as convertIp, bo as coverBox, bp as decimalToIp, bq as decimalToIpCidr, br as describePermissions, bs as fitIntoBox, bt as formatNumber, bu as formatValue, bv as formatVwValue, bw as formatWithSeparator, bx as gcd, by as ipFromBinary, bz as ipFromDecimal, bA as ipFromHex, bB as ipToBinary, bC as ipToDecimal, bD as ipToDecimalCidr, bE as ipToHex, bF as ipToOctal, bG as isValid, bH as isValidCidr, bI as isValidIp, bJ as isValidIpv4, bK as marginToMarkup, bL as markupToMargin, bM as octalToPermissions, bN as parseFileSize, bO as parseInput, bP as parseNumberString, bQ as parseSemver, bR as permissionsToChmod, bS as permissionsToOctal, bT as permissionsToSymbolic, bU as ptToPx, bV as pxToAll, bW as pxToViewport, bX as remToPx, bY as satisfiesRange, bZ as scaleByHeight, b_ as scaleByWidth, b$ as sortVersions, c0 as splitSubnet, c1 as symbolicToPermissions, c2 as validateBarcode, c3 as validateCardNumber, c4 as validateIban, c5 as validateIsbn, c6 as viewportToPx } from '../units-ClKR6Jxz.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, calculateBlendedLoanRate, calculateBreakEven, calculateCashBreakdown, calculateCashRounding, calculateCdMaturity, calculateChange, calculateCompoundInterest, calculateCreditUtilization, calculateDebtToIncomeRatio, calculateDepreciationSchedule, calculateDiscount, calculateEmi, calculateGpa, calculateLoan, calculateMarginMarkup, calculateMovingAverages, calculatePaybackPeriod, calculatePercentageChange, calculateRoi, calculateRuleOf72, calculateSavingsGoal, calculateSimpleInterest, calculateTax, calculateTimeValue, calculateTipSplit, calculateVideoBitrate, compareSemver, compareUnitPrices, convert, convertAprApy, convertBytes, convertIp, coverBox, decimalToIp, decimalToIpCidr, describePermissions, fitIntoBox, formatNumber, formatValue, formatVwValue, formatWithSeparator, gcd, ipFromBinary, ipFromDecimal, ipFromHex, ipToBinary, ipToDecimal, ipToDecimalCidr, ipToHex, ipToOctal, isValid, isValidCidr, isValidIp, isValidIpv4, marginToMarkup, markupToMargin, 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-MRIGQRTU.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, calculateBlendedLoanRate, calculateBreakEven, calculateCashBreakdown, calculateCashRounding, calculateCdMaturity, calculateChange, calculateCompoundInterest, calculateCreditUtilization, calculateDebtToIncomeRatio, calculateDepreciationSchedule, calculateDiscount, calculateEmi, calculateFreelancerRate, calculateGpa, calculateLoan, calculateMarginMarkup, calculateMovingAverages, calculatePaybackPeriod, calculatePercentageChange, calculateRoi, calculateRuleOf72, calculateSavingsGoal, calculateSimpleInterest, calculateTax, calculateTimeValue, calculateTipSplit, calculateVideoBitrate, compareSemver, compareUnitPrices, convert, convertAprApy, convertBytes, convertIp, coverBox, decimalToIp, decimalToIpCidr, describePermissions, fitIntoBox, formatNumber, formatValue, formatVwValue, formatWithSeparator, gcd, ipFromBinary, ipFromDecimal, ipFromHex, ipToBinary, ipToDecimal, ipToDecimalCidr, ipToHex, ipToOctal, isValid, isValidCidr, isValidIp, isValidIpv4, marginToMarkup, markupToMargin, 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-B7366PQJ.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -37,6 +37,7 @@
37
37
  * - cd-maturity-calculator : calculateCdMaturity
38
38
  * - depreciation-schedule-calculator : calculateDepreciationSchedule
39
39
  * - blended-loan-rate-calculator : calculateBlendedLoanRate
40
+ * - freelancer-rate-calculator : calculateFreelancerRate
40
41
  */
41
42
  interface PxConvertResult {
42
43
  px: number;
@@ -1056,6 +1057,34 @@ interface BlendedLoanRateResult {
1056
1057
  declare function calculateBlendedLoanRate(loans: LoanBalanceInput[]): BlendedLoanRateResult | {
1057
1058
  error: string;
1058
1059
  };
1060
+ interface FreelancerRateInput {
1061
+ targetAnnualIncome: number;
1062
+ billableHoursPerWeek: number;
1063
+ weeksPerYear: number;
1064
+ annualOverheadCosts?: number;
1065
+ profitMarginPercent?: number;
1066
+ }
1067
+ interface FreelancerRateResult {
1068
+ targetAnnualIncome: number;
1069
+ annualOverheadCosts: number;
1070
+ profitMarginPercent: number;
1071
+ annualBillableHours: number;
1072
+ requiredAnnualRevenue: number;
1073
+ hourlyRate: number;
1074
+ dailyRate: number;
1075
+ monthlyRevenueTarget: number;
1076
+ }
1077
+ /**
1078
+ * Solve for the minimum hourly rate a freelancer must charge to hit a target
1079
+ * annual take-home income, given billable hours per week, weeks actually
1080
+ * worked per year (after vacation, holidays, and unbillable time), annual
1081
+ * business overhead, and an optional profit margin/buffer applied on top.
1082
+ * Pure arithmetic: the revenue needed (income plus overhead, marked up by
1083
+ * the margin) divided by total billable hours across the year.
1084
+ */
1085
+ declare function calculateFreelancerRate(input: FreelancerRateInput): FreelancerRateResult | {
1086
+ error: string;
1087
+ };
1059
1088
 
1060
1089
  type units_AmortizationRow = AmortizationRow;
1061
1090
  type units_AprApyDirection = AprApyDirection;
@@ -1109,6 +1138,8 @@ type units_EmiTenureUnit = EmiTenureUnit;
1109
1138
  type units_EmiYearlyBreakdownRow = EmiYearlyBreakdownRow;
1110
1139
  type units_FilePermissions = FilePermissions;
1111
1140
  type units_FormatOptions = FormatOptions;
1141
+ type units_FreelancerRateInput = FreelancerRateInput;
1142
+ type units_FreelancerRateResult = FreelancerRateResult;
1112
1143
  declare const units_GPA_GRADE_POINTS: typeof GPA_GRADE_POINTS;
1113
1144
  type units_GpaCourse = GpaCourse;
1114
1145
  type units_GpaCourseResult = GpaCourseResult;
@@ -1175,6 +1206,7 @@ declare const units_calculateDebtToIncomeRatio: typeof calculateDebtToIncomeRati
1175
1206
  declare const units_calculateDepreciationSchedule: typeof calculateDepreciationSchedule;
1176
1207
  declare const units_calculateDiscount: typeof calculateDiscount;
1177
1208
  declare const units_calculateEmi: typeof calculateEmi;
1209
+ declare const units_calculateFreelancerRate: typeof calculateFreelancerRate;
1178
1210
  declare const units_calculateGpa: typeof calculateGpa;
1179
1211
  declare const units_calculateLoan: typeof calculateLoan;
1180
1212
  declare const units_calculateMarginMarkup: typeof calculateMarginMarkup;
@@ -1243,7 +1275,7 @@ declare const units_validateIban: typeof validateIban;
1243
1275
  declare const units_validateIsbn: typeof validateIsbn;
1244
1276
  declare const units_viewportToPx: typeof viewportToPx;
1245
1277
  declare namespace units {
1246
- export { type units_AmortizationRow as AmortizationRow, 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_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_CreditUtilizationResult as CreditUtilizationResult, type units_DebtItemInput as DebtItemInput, type units_DebtItemResult as DebtItemResult, 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_FilePermissions as FilePermissions, type units_FormatOptions as FormatOptions, 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_LoanBalanceInput as LoanBalanceInput, type units_LoanBalanceResult as LoanBalanceResult, type units_LoanResult as LoanResult, type units_MarginMarkupField as MarginMarkupField, type units_MarginMarkupInput as MarginMarkupInput, type units_MarginMarkupResult as MarginMarkupResult, 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_PxConvertResult as PxConvertResult, 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_TaxResult as TaxResult, type units_TimeValueDirection as TimeValueDirection, type units_TimeValueResult as TimeValueResult, type units_TipSplitResult as TipSplitResult, 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, units_applySuccessiveDiscounts as applySuccessiveDiscounts, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, 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_calculateCreditUtilization as calculateCreditUtilization, units_calculateDebtToIncomeRatio as calculateDebtToIncomeRatio, units_calculateDepreciationSchedule as calculateDepreciationSchedule, units_calculateDiscount as calculateDiscount, units_calculateEmi as calculateEmi, units_calculateGpa as calculateGpa, units_calculateLoan as calculateLoan, units_calculateMarginMarkup as calculateMarginMarkup, units_calculateMovingAverages as calculateMovingAverages, units_calculatePaybackPeriod as calculatePaybackPeriod, units_calculatePercentageChange as calculatePercentageChange, units_calculateRoi as calculateRoi, units_calculateRuleOf72 as calculateRuleOf72, units_calculateSavingsGoal as calculateSavingsGoal, units_calculateSimpleInterest as calculateSimpleInterest, units_calculateTax as calculateTax, units_calculateTimeValue as calculateTimeValue, units_calculateTipSplit as calculateTipSplit, 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_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_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 };
1278
+ export { type units_AmortizationRow as AmortizationRow, 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_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_CreditUtilizationResult as CreditUtilizationResult, type units_DebtItemInput as DebtItemInput, type units_DebtItemResult as DebtItemResult, 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_FilePermissions as FilePermissions, 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_LoanBalanceInput as LoanBalanceInput, type units_LoanBalanceResult as LoanBalanceResult, type units_LoanResult as LoanResult, type units_MarginMarkupField as MarginMarkupField, type units_MarginMarkupInput as MarginMarkupInput, type units_MarginMarkupResult as MarginMarkupResult, 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_PxConvertResult as PxConvertResult, 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_TaxResult as TaxResult, type units_TimeValueDirection as TimeValueDirection, type units_TimeValueResult as TimeValueResult, type units_TipSplitResult as TipSplitResult, 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, units_applySuccessiveDiscounts as applySuccessiveDiscounts, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, 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_calculateCreditUtilization as calculateCreditUtilization, units_calculateDebtToIncomeRatio as calculateDebtToIncomeRatio, units_calculateDepreciationSchedule as calculateDepreciationSchedule, units_calculateDiscount as calculateDiscount, units_calculateEmi as calculateEmi, units_calculateFreelancerRate as calculateFreelancerRate, units_calculateGpa as calculateGpa, units_calculateLoan as calculateLoan, units_calculateMarginMarkup as calculateMarginMarkup, units_calculateMovingAverages as calculateMovingAverages, units_calculatePaybackPeriod as calculatePaybackPeriod, units_calculatePercentageChange as calculatePercentageChange, units_calculateRoi as calculateRoi, units_calculateRuleOf72 as calculateRuleOf72, units_calculateSavingsGoal as calculateSavingsGoal, units_calculateSimpleInterest as calculateSimpleInterest, units_calculateTax as calculateTax, units_calculateTimeValue as calculateTimeValue, units_calculateTipSplit as calculateTipSplit, 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_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_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 };
1247
1279
  }
1248
1280
 
1249
- export { GPA_GRADE_POINTS as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type CashRoundingResult as D, type CdMaturityResult as E, type CompareUnitPricesResult as F, type CompoundInterestResult as G, type CompoundYearRow as H, type CreditAccountInput as I, type CreditAccountResult as J, type CreditUtilizationResult as K, type DebtItemInput as L, type DebtItemResult as M, type DebtToIncomeRatioResult as N, type DepreciationMethod as O, type DepreciationResult as P, type DepreciationYear as Q, type Dimensions as R, type DiscountField as S, type DiscountInput as T, type DiscountResult as U, type DtiTier as V, type EmiResult as W, type EmiTenureUnit as X, type EmiYearlyBreakdownRow as Y, type FilePermissions as Z, type FormatOptions as _, type AprApyDirection as a, calculateDiscount as a$, type GpaCourse as a0, type GpaCourseResult as a1, type GpaResult as a2, type IbanValidationResult as a3, type IpConversion as a4, type IsbnFormat as a5, type IsbnResult as a6, type LoanBalanceInput as a7, type LoanBalanceResult as a8, type LoanResult as a9, type TaxResult as aA, type TimeValueDirection as aB, type TimeValueResult as aC, type TipSplitResult as aD, USD_DENOMINATIONS as aE, type UnitPriceItem as aF, type UnitPriceResult as aG, type UtilizationTier as aH, type VideoBitrateInput as aI, type VideoBitrateMode as aJ, type VideoBitrateResult as aK, type ViewportConvertResult as aL, applySuccessiveDiscounts as aM, autoFormat as aN, bumpVersion as aO, calcAspectRatio as aP, calcSubnet as aQ, calculateBlendedLoanRate as aR, calculateBreakEven as aS, calculateCashBreakdown as aT, calculateCashRounding as aU, calculateCdMaturity as aV, calculateChange as aW, calculateCompoundInterest as aX, calculateCreditUtilization as aY, calculateDebtToIncomeRatio as aZ, calculateDepreciationSchedule as a_, type MarginMarkupField as aa, type MarginMarkupInput as ab, type MarginMarkupResult as ac, type MovingAveragePoint as ad, type MovingAverageResult 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 PxConvertResult as am, type RoiInput as an, type RoiResult as ao, type RuleOf72Direction as ap, type RuleOf72Result as aq, type SavingsGoalInput as ar, type SavingsGoalMode as as, type SavingsGoalResult as at, type SemverVersion as au, type SimpleInterestResult as av, type SubnetInfo as aw, type SuccessiveDiscountResult as ax, type SuccessiveDiscountStep as ay, type TaxDirection as az, type AprApyResult as b, validateBarcode as b$, calculateEmi as b0, calculateGpa as b1, calculateLoan as b2, calculateMarginMarkup as b3, calculateMovingAverages as b4, calculatePaybackPeriod as b5, calculatePercentageChange as b6, calculateRoi as b7, calculateRuleOf72 as b8, calculateSavingsGoal as b9, ipToDecimalCidr as bA, ipToHex as bB, ipToOctal as bC, isValid as bD, isValidCidr as bE, isValidIp as bF, isValidIpv4 as bG, marginToMarkup as bH, markupToMargin as bI, octalToPermissions as bJ, parseFileSize as bK, parseInput as bL, parseNumberString as bM, parseSemver as bN, permissionsToChmod as bO, permissionsToOctal as bP, permissionsToSymbolic as bQ, ptToPx as bR, pxToAll as bS, pxToViewport as bT, remToPx as bU, satisfiesRange as bV, scaleByHeight as bW, scaleByWidth as bX, sortVersions as bY, splitSubnet as bZ, symbolicToPermissions as b_, calculateSimpleInterest as ba, calculateTax as bb, calculateTimeValue as bc, calculateTipSplit as bd, calculateVideoBitrate as be, compareSemver as bf, compareUnitPrices as bg, convert as bh, convertAprApy as bi, convertBytes as bj, convertIp as bk, coverBox as bl, decimalToIp as bm, decimalToIpCidr as bn, describePermissions as bo, fitIntoBox as bp, formatNumber as bq, formatValue as br, formatVwValue as bs, formatWithSeparator as bt, gcd as bu, ipFromBinary as bv, ipFromDecimal as bw, ipFromHex as bx, ipToBinary as by, ipToDecimal as bz, type AspectRatioResult as c, validateCardNumber as c0, validateIban as c1, validateIsbn as c2, viewportToPx as c3, BASE_PREFIXES as d, BYTE_UNITS as e, type BarcodeFormat as f, type BarcodeValidationResult as g, type BaseConvertResult as h, type BlendedLoanRateResult as i, type BreakEvenInput as j, type BreakEvenResult as k, type ByteConvertResult as l, type ByteUnit as m, COMMON_LOCALES as n, COMMON_PERMISSIONS as o, COMMON_RATIOS as p, COMMON_SIZES as q, COMMON_TAX_RATES as r, COMMON_TIP_PERCENTAGES as s, COMMON_VIEWPORTS as t, units as u, type CardValidationResult as v, type CashBreakdownResult as w, type CashChangeResult as x, type CashDenominationItem as y, type CashRoundingMode as z };
1281
+ export { type FreelancerRateInput as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type CashRoundingResult as D, type CdMaturityResult as E, type CompareUnitPricesResult as F, type CompoundInterestResult as G, type CompoundYearRow as H, type CreditAccountInput as I, type CreditAccountResult as J, type CreditUtilizationResult as K, type DebtItemInput as L, type DebtItemResult as M, type DebtToIncomeRatioResult as N, type DepreciationMethod as O, type DepreciationResult as P, type DepreciationYear as Q, type Dimensions as R, type DiscountField as S, type DiscountInput as T, type DiscountResult as U, type DtiTier as V, type EmiResult as W, type EmiTenureUnit as X, type EmiYearlyBreakdownRow as Y, type FilePermissions as Z, type FormatOptions as _, type AprApyDirection as a, calculateDebtToIncomeRatio as a$, type FreelancerRateResult as a0, GPA_GRADE_POINTS as a1, type GpaCourse as a2, type GpaCourseResult as a3, type GpaResult as a4, type IbanValidationResult as a5, type IpConversion as a6, type IsbnFormat as a7, type IsbnResult as a8, type LoanBalanceInput as a9, type SuccessiveDiscountStep as aA, type TaxDirection as aB, type TaxResult as aC, type TimeValueDirection as aD, type TimeValueResult as aE, type TipSplitResult as aF, USD_DENOMINATIONS as aG, type UnitPriceItem as aH, type UnitPriceResult as aI, type UtilizationTier as aJ, type VideoBitrateInput as aK, type VideoBitrateMode as aL, type VideoBitrateResult as aM, type ViewportConvertResult as aN, applySuccessiveDiscounts as aO, autoFormat as aP, bumpVersion as aQ, calcAspectRatio as aR, calcSubnet as aS, calculateBlendedLoanRate as aT, calculateBreakEven as aU, calculateCashBreakdown as aV, calculateCashRounding as aW, calculateCdMaturity as aX, calculateChange as aY, calculateCompoundInterest as aZ, calculateCreditUtilization as a_, type LoanBalanceResult as aa, type LoanResult as ab, type MarginMarkupField as ac, type MarginMarkupInput as ad, type MarginMarkupResult as ae, type MovingAveragePoint as af, type MovingAverageResult as ag, type NotationStyle as ah, type NumberBase as ai, type PaybackPeriodInput as aj, type PaybackPeriodResult as ak, type PercentChangeDirection as al, type PercentageChangeResult as am, type Permission as an, type PxConvertResult as ao, type RoiInput as ap, type RoiResult as aq, type RuleOf72Direction as ar, type RuleOf72Result as as, type SavingsGoalInput as at, type SavingsGoalMode as au, type SavingsGoalResult as av, type SemverVersion as aw, type SimpleInterestResult as ax, type SubnetInfo as ay, type SuccessiveDiscountResult as az, type AprApyResult as b, sortVersions as b$, calculateDepreciationSchedule as b0, calculateDiscount as b1, calculateEmi as b2, calculateFreelancerRate as b3, calculateGpa as b4, calculateLoan as b5, calculateMarginMarkup as b6, calculateMovingAverages as b7, calculatePaybackPeriod as b8, calculatePercentageChange as b9, ipFromHex as bA, ipToBinary as bB, ipToDecimal as bC, ipToDecimalCidr as bD, ipToHex as bE, ipToOctal as bF, isValid as bG, isValidCidr as bH, isValidIp as bI, isValidIpv4 as bJ, marginToMarkup as bK, markupToMargin as bL, octalToPermissions as bM, parseFileSize as bN, parseInput as bO, parseNumberString as bP, parseSemver as bQ, permissionsToChmod as bR, permissionsToOctal as bS, permissionsToSymbolic as bT, ptToPx as bU, pxToAll as bV, pxToViewport as bW, remToPx as bX, satisfiesRange as bY, scaleByHeight as bZ, scaleByWidth as b_, calculateRoi as ba, calculateRuleOf72 as bb, calculateSavingsGoal as bc, calculateSimpleInterest as bd, calculateTax as be, calculateTimeValue as bf, calculateTipSplit as bg, calculateVideoBitrate as bh, compareSemver as bi, compareUnitPrices as bj, convert as bk, convertAprApy as bl, convertBytes as bm, convertIp as bn, coverBox as bo, decimalToIp as bp, decimalToIpCidr as bq, describePermissions as br, fitIntoBox as bs, formatNumber as bt, formatValue as bu, formatVwValue as bv, formatWithSeparator as bw, gcd as bx, ipFromBinary as by, ipFromDecimal as bz, type AspectRatioResult as c, splitSubnet as c0, symbolicToPermissions as c1, validateBarcode as c2, validateCardNumber as c3, validateIban as c4, validateIsbn as c5, viewportToPx as c6, BASE_PREFIXES as d, BYTE_UNITS as e, type BarcodeFormat as f, type BarcodeValidationResult as g, type BaseConvertResult as h, type BlendedLoanRateResult as i, type BreakEvenInput as j, type BreakEvenResult as k, type ByteConvertResult as l, type ByteUnit as m, COMMON_LOCALES as n, COMMON_PERMISSIONS as o, COMMON_RATIOS as p, COMMON_SIZES as q, COMMON_TAX_RATES as r, COMMON_TIP_PERCENTAGES as s, COMMON_VIEWPORTS as t, units as u, type CardValidationResult as v, type CashBreakdownResult as w, type CashChangeResult as x, type CashDenominationItem as y, type CashRoundingMode as z };
@@ -37,6 +37,7 @@
37
37
  * - cd-maturity-calculator : calculateCdMaturity
38
38
  * - depreciation-schedule-calculator : calculateDepreciationSchedule
39
39
  * - blended-loan-rate-calculator : calculateBlendedLoanRate
40
+ * - freelancer-rate-calculator : calculateFreelancerRate
40
41
  */
41
42
  interface PxConvertResult {
42
43
  px: number;
@@ -1056,6 +1057,34 @@ interface BlendedLoanRateResult {
1056
1057
  declare function calculateBlendedLoanRate(loans: LoanBalanceInput[]): BlendedLoanRateResult | {
1057
1058
  error: string;
1058
1059
  };
1060
+ interface FreelancerRateInput {
1061
+ targetAnnualIncome: number;
1062
+ billableHoursPerWeek: number;
1063
+ weeksPerYear: number;
1064
+ annualOverheadCosts?: number;
1065
+ profitMarginPercent?: number;
1066
+ }
1067
+ interface FreelancerRateResult {
1068
+ targetAnnualIncome: number;
1069
+ annualOverheadCosts: number;
1070
+ profitMarginPercent: number;
1071
+ annualBillableHours: number;
1072
+ requiredAnnualRevenue: number;
1073
+ hourlyRate: number;
1074
+ dailyRate: number;
1075
+ monthlyRevenueTarget: number;
1076
+ }
1077
+ /**
1078
+ * Solve for the minimum hourly rate a freelancer must charge to hit a target
1079
+ * annual take-home income, given billable hours per week, weeks actually
1080
+ * worked per year (after vacation, holidays, and unbillable time), annual
1081
+ * business overhead, and an optional profit margin/buffer applied on top.
1082
+ * Pure arithmetic: the revenue needed (income plus overhead, marked up by
1083
+ * the margin) divided by total billable hours across the year.
1084
+ */
1085
+ declare function calculateFreelancerRate(input: FreelancerRateInput): FreelancerRateResult | {
1086
+ error: string;
1087
+ };
1059
1088
 
1060
1089
  type units_AmortizationRow = AmortizationRow;
1061
1090
  type units_AprApyDirection = AprApyDirection;
@@ -1109,6 +1138,8 @@ type units_EmiTenureUnit = EmiTenureUnit;
1109
1138
  type units_EmiYearlyBreakdownRow = EmiYearlyBreakdownRow;
1110
1139
  type units_FilePermissions = FilePermissions;
1111
1140
  type units_FormatOptions = FormatOptions;
1141
+ type units_FreelancerRateInput = FreelancerRateInput;
1142
+ type units_FreelancerRateResult = FreelancerRateResult;
1112
1143
  declare const units_GPA_GRADE_POINTS: typeof GPA_GRADE_POINTS;
1113
1144
  type units_GpaCourse = GpaCourse;
1114
1145
  type units_GpaCourseResult = GpaCourseResult;
@@ -1175,6 +1206,7 @@ declare const units_calculateDebtToIncomeRatio: typeof calculateDebtToIncomeRati
1175
1206
  declare const units_calculateDepreciationSchedule: typeof calculateDepreciationSchedule;
1176
1207
  declare const units_calculateDiscount: typeof calculateDiscount;
1177
1208
  declare const units_calculateEmi: typeof calculateEmi;
1209
+ declare const units_calculateFreelancerRate: typeof calculateFreelancerRate;
1178
1210
  declare const units_calculateGpa: typeof calculateGpa;
1179
1211
  declare const units_calculateLoan: typeof calculateLoan;
1180
1212
  declare const units_calculateMarginMarkup: typeof calculateMarginMarkup;
@@ -1243,7 +1275,7 @@ declare const units_validateIban: typeof validateIban;
1243
1275
  declare const units_validateIsbn: typeof validateIsbn;
1244
1276
  declare const units_viewportToPx: typeof viewportToPx;
1245
1277
  declare namespace units {
1246
- export { type units_AmortizationRow as AmortizationRow, 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_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_CreditUtilizationResult as CreditUtilizationResult, type units_DebtItemInput as DebtItemInput, type units_DebtItemResult as DebtItemResult, 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_FilePermissions as FilePermissions, type units_FormatOptions as FormatOptions, 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_LoanBalanceInput as LoanBalanceInput, type units_LoanBalanceResult as LoanBalanceResult, type units_LoanResult as LoanResult, type units_MarginMarkupField as MarginMarkupField, type units_MarginMarkupInput as MarginMarkupInput, type units_MarginMarkupResult as MarginMarkupResult, 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_PxConvertResult as PxConvertResult, 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_TaxResult as TaxResult, type units_TimeValueDirection as TimeValueDirection, type units_TimeValueResult as TimeValueResult, type units_TipSplitResult as TipSplitResult, 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, units_applySuccessiveDiscounts as applySuccessiveDiscounts, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, 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_calculateCreditUtilization as calculateCreditUtilization, units_calculateDebtToIncomeRatio as calculateDebtToIncomeRatio, units_calculateDepreciationSchedule as calculateDepreciationSchedule, units_calculateDiscount as calculateDiscount, units_calculateEmi as calculateEmi, units_calculateGpa as calculateGpa, units_calculateLoan as calculateLoan, units_calculateMarginMarkup as calculateMarginMarkup, units_calculateMovingAverages as calculateMovingAverages, units_calculatePaybackPeriod as calculatePaybackPeriod, units_calculatePercentageChange as calculatePercentageChange, units_calculateRoi as calculateRoi, units_calculateRuleOf72 as calculateRuleOf72, units_calculateSavingsGoal as calculateSavingsGoal, units_calculateSimpleInterest as calculateSimpleInterest, units_calculateTax as calculateTax, units_calculateTimeValue as calculateTimeValue, units_calculateTipSplit as calculateTipSplit, 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_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_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 };
1278
+ export { type units_AmortizationRow as AmortizationRow, 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_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_CreditUtilizationResult as CreditUtilizationResult, type units_DebtItemInput as DebtItemInput, type units_DebtItemResult as DebtItemResult, 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_FilePermissions as FilePermissions, 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_LoanBalanceInput as LoanBalanceInput, type units_LoanBalanceResult as LoanBalanceResult, type units_LoanResult as LoanResult, type units_MarginMarkupField as MarginMarkupField, type units_MarginMarkupInput as MarginMarkupInput, type units_MarginMarkupResult as MarginMarkupResult, 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_PxConvertResult as PxConvertResult, 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_TaxResult as TaxResult, type units_TimeValueDirection as TimeValueDirection, type units_TimeValueResult as TimeValueResult, type units_TipSplitResult as TipSplitResult, 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, units_applySuccessiveDiscounts as applySuccessiveDiscounts, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, 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_calculateCreditUtilization as calculateCreditUtilization, units_calculateDebtToIncomeRatio as calculateDebtToIncomeRatio, units_calculateDepreciationSchedule as calculateDepreciationSchedule, units_calculateDiscount as calculateDiscount, units_calculateEmi as calculateEmi, units_calculateFreelancerRate as calculateFreelancerRate, units_calculateGpa as calculateGpa, units_calculateLoan as calculateLoan, units_calculateMarginMarkup as calculateMarginMarkup, units_calculateMovingAverages as calculateMovingAverages, units_calculatePaybackPeriod as calculatePaybackPeriod, units_calculatePercentageChange as calculatePercentageChange, units_calculateRoi as calculateRoi, units_calculateRuleOf72 as calculateRuleOf72, units_calculateSavingsGoal as calculateSavingsGoal, units_calculateSimpleInterest as calculateSimpleInterest, units_calculateTax as calculateTax, units_calculateTimeValue as calculateTimeValue, units_calculateTipSplit as calculateTipSplit, 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_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_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 };
1247
1279
  }
1248
1280
 
1249
- export { GPA_GRADE_POINTS as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type CashRoundingResult as D, type CdMaturityResult as E, type CompareUnitPricesResult as F, type CompoundInterestResult as G, type CompoundYearRow as H, type CreditAccountInput as I, type CreditAccountResult as J, type CreditUtilizationResult as K, type DebtItemInput as L, type DebtItemResult as M, type DebtToIncomeRatioResult as N, type DepreciationMethod as O, type DepreciationResult as P, type DepreciationYear as Q, type Dimensions as R, type DiscountField as S, type DiscountInput as T, type DiscountResult as U, type DtiTier as V, type EmiResult as W, type EmiTenureUnit as X, type EmiYearlyBreakdownRow as Y, type FilePermissions as Z, type FormatOptions as _, type AprApyDirection as a, calculateDiscount as a$, type GpaCourse as a0, type GpaCourseResult as a1, type GpaResult as a2, type IbanValidationResult as a3, type IpConversion as a4, type IsbnFormat as a5, type IsbnResult as a6, type LoanBalanceInput as a7, type LoanBalanceResult as a8, type LoanResult as a9, type TaxResult as aA, type TimeValueDirection as aB, type TimeValueResult as aC, type TipSplitResult as aD, USD_DENOMINATIONS as aE, type UnitPriceItem as aF, type UnitPriceResult as aG, type UtilizationTier as aH, type VideoBitrateInput as aI, type VideoBitrateMode as aJ, type VideoBitrateResult as aK, type ViewportConvertResult as aL, applySuccessiveDiscounts as aM, autoFormat as aN, bumpVersion as aO, calcAspectRatio as aP, calcSubnet as aQ, calculateBlendedLoanRate as aR, calculateBreakEven as aS, calculateCashBreakdown as aT, calculateCashRounding as aU, calculateCdMaturity as aV, calculateChange as aW, calculateCompoundInterest as aX, calculateCreditUtilization as aY, calculateDebtToIncomeRatio as aZ, calculateDepreciationSchedule as a_, type MarginMarkupField as aa, type MarginMarkupInput as ab, type MarginMarkupResult as ac, type MovingAveragePoint as ad, type MovingAverageResult 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 PxConvertResult as am, type RoiInput as an, type RoiResult as ao, type RuleOf72Direction as ap, type RuleOf72Result as aq, type SavingsGoalInput as ar, type SavingsGoalMode as as, type SavingsGoalResult as at, type SemverVersion as au, type SimpleInterestResult as av, type SubnetInfo as aw, type SuccessiveDiscountResult as ax, type SuccessiveDiscountStep as ay, type TaxDirection as az, type AprApyResult as b, validateBarcode as b$, calculateEmi as b0, calculateGpa as b1, calculateLoan as b2, calculateMarginMarkup as b3, calculateMovingAverages as b4, calculatePaybackPeriod as b5, calculatePercentageChange as b6, calculateRoi as b7, calculateRuleOf72 as b8, calculateSavingsGoal as b9, ipToDecimalCidr as bA, ipToHex as bB, ipToOctal as bC, isValid as bD, isValidCidr as bE, isValidIp as bF, isValidIpv4 as bG, marginToMarkup as bH, markupToMargin as bI, octalToPermissions as bJ, parseFileSize as bK, parseInput as bL, parseNumberString as bM, parseSemver as bN, permissionsToChmod as bO, permissionsToOctal as bP, permissionsToSymbolic as bQ, ptToPx as bR, pxToAll as bS, pxToViewport as bT, remToPx as bU, satisfiesRange as bV, scaleByHeight as bW, scaleByWidth as bX, sortVersions as bY, splitSubnet as bZ, symbolicToPermissions as b_, calculateSimpleInterest as ba, calculateTax as bb, calculateTimeValue as bc, calculateTipSplit as bd, calculateVideoBitrate as be, compareSemver as bf, compareUnitPrices as bg, convert as bh, convertAprApy as bi, convertBytes as bj, convertIp as bk, coverBox as bl, decimalToIp as bm, decimalToIpCidr as bn, describePermissions as bo, fitIntoBox as bp, formatNumber as bq, formatValue as br, formatVwValue as bs, formatWithSeparator as bt, gcd as bu, ipFromBinary as bv, ipFromDecimal as bw, ipFromHex as bx, ipToBinary as by, ipToDecimal as bz, type AspectRatioResult as c, validateCardNumber as c0, validateIban as c1, validateIsbn as c2, viewportToPx as c3, BASE_PREFIXES as d, BYTE_UNITS as e, type BarcodeFormat as f, type BarcodeValidationResult as g, type BaseConvertResult as h, type BlendedLoanRateResult as i, type BreakEvenInput as j, type BreakEvenResult as k, type ByteConvertResult as l, type ByteUnit as m, COMMON_LOCALES as n, COMMON_PERMISSIONS as o, COMMON_RATIOS as p, COMMON_SIZES as q, COMMON_TAX_RATES as r, COMMON_TIP_PERCENTAGES as s, COMMON_VIEWPORTS as t, units as u, type CardValidationResult as v, type CashBreakdownResult as w, type CashChangeResult as x, type CashDenominationItem as y, type CashRoundingMode as z };
1281
+ export { type FreelancerRateInput as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type CashRoundingResult as D, type CdMaturityResult as E, type CompareUnitPricesResult as F, type CompoundInterestResult as G, type CompoundYearRow as H, type CreditAccountInput as I, type CreditAccountResult as J, type CreditUtilizationResult as K, type DebtItemInput as L, type DebtItemResult as M, type DebtToIncomeRatioResult as N, type DepreciationMethod as O, type DepreciationResult as P, type DepreciationYear as Q, type Dimensions as R, type DiscountField as S, type DiscountInput as T, type DiscountResult as U, type DtiTier as V, type EmiResult as W, type EmiTenureUnit as X, type EmiYearlyBreakdownRow as Y, type FilePermissions as Z, type FormatOptions as _, type AprApyDirection as a, calculateDebtToIncomeRatio as a$, type FreelancerRateResult as a0, GPA_GRADE_POINTS as a1, type GpaCourse as a2, type GpaCourseResult as a3, type GpaResult as a4, type IbanValidationResult as a5, type IpConversion as a6, type IsbnFormat as a7, type IsbnResult as a8, type LoanBalanceInput as a9, type SuccessiveDiscountStep as aA, type TaxDirection as aB, type TaxResult as aC, type TimeValueDirection as aD, type TimeValueResult as aE, type TipSplitResult as aF, USD_DENOMINATIONS as aG, type UnitPriceItem as aH, type UnitPriceResult as aI, type UtilizationTier as aJ, type VideoBitrateInput as aK, type VideoBitrateMode as aL, type VideoBitrateResult as aM, type ViewportConvertResult as aN, applySuccessiveDiscounts as aO, autoFormat as aP, bumpVersion as aQ, calcAspectRatio as aR, calcSubnet as aS, calculateBlendedLoanRate as aT, calculateBreakEven as aU, calculateCashBreakdown as aV, calculateCashRounding as aW, calculateCdMaturity as aX, calculateChange as aY, calculateCompoundInterest as aZ, calculateCreditUtilization as a_, type LoanBalanceResult as aa, type LoanResult as ab, type MarginMarkupField as ac, type MarginMarkupInput as ad, type MarginMarkupResult as ae, type MovingAveragePoint as af, type MovingAverageResult as ag, type NotationStyle as ah, type NumberBase as ai, type PaybackPeriodInput as aj, type PaybackPeriodResult as ak, type PercentChangeDirection as al, type PercentageChangeResult as am, type Permission as an, type PxConvertResult as ao, type RoiInput as ap, type RoiResult as aq, type RuleOf72Direction as ar, type RuleOf72Result as as, type SavingsGoalInput as at, type SavingsGoalMode as au, type SavingsGoalResult as av, type SemverVersion as aw, type SimpleInterestResult as ax, type SubnetInfo as ay, type SuccessiveDiscountResult as az, type AprApyResult as b, sortVersions as b$, calculateDepreciationSchedule as b0, calculateDiscount as b1, calculateEmi as b2, calculateFreelancerRate as b3, calculateGpa as b4, calculateLoan as b5, calculateMarginMarkup as b6, calculateMovingAverages as b7, calculatePaybackPeriod as b8, calculatePercentageChange as b9, ipFromHex as bA, ipToBinary as bB, ipToDecimal as bC, ipToDecimalCidr as bD, ipToHex as bE, ipToOctal as bF, isValid as bG, isValidCidr as bH, isValidIp as bI, isValidIpv4 as bJ, marginToMarkup as bK, markupToMargin as bL, octalToPermissions as bM, parseFileSize as bN, parseInput as bO, parseNumberString as bP, parseSemver as bQ, permissionsToChmod as bR, permissionsToOctal as bS, permissionsToSymbolic as bT, ptToPx as bU, pxToAll as bV, pxToViewport as bW, remToPx as bX, satisfiesRange as bY, scaleByHeight as bZ, scaleByWidth as b_, calculateRoi as ba, calculateRuleOf72 as bb, calculateSavingsGoal as bc, calculateSimpleInterest as bd, calculateTax as be, calculateTimeValue as bf, calculateTipSplit as bg, calculateVideoBitrate as bh, compareSemver as bi, compareUnitPrices as bj, convert as bk, convertAprApy as bl, convertBytes as bm, convertIp as bn, coverBox as bo, decimalToIp as bp, decimalToIpCidr as bq, describePermissions as br, fitIntoBox as bs, formatNumber as bt, formatValue as bu, formatVwValue as bv, formatWithSeparator as bw, gcd as bx, ipFromBinary as by, ipFromDecimal as bz, type AspectRatioResult as c, splitSubnet as c0, symbolicToPermissions as c1, validateBarcode as c2, validateCardNumber as c3, validateIban as c4, validateIsbn as c5, viewportToPx as c6, BASE_PREFIXES as d, BYTE_UNITS as e, type BarcodeFormat as f, type BarcodeValidationResult as g, type BaseConvertResult as h, type BlendedLoanRateResult as i, type BreakEvenInput as j, type BreakEvenResult as k, type ByteConvertResult as l, type ByteUnit as m, COMMON_LOCALES as n, COMMON_PERMISSIONS as o, COMMON_RATIOS as p, COMMON_SIZES as q, COMMON_TAX_RATES as r, COMMON_TIP_PERCENTAGES as s, COMMON_VIEWPORTS as t, units as u, type CardValidationResult as v, type CashBreakdownResult as w, type CashChangeResult as x, type CashDenominationItem as y, type CashRoundingMode as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@utilix-tech/sdk",
3
- "version": "0.59.0",
3
+ "version": "0.60.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",