@utilix-tech/sdk 0.72.0 → 0.74.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.
@@ -3652,6 +3652,167 @@ function extractMarkdownFootnotes(markdown) {
3652
3652
  }
3653
3653
  return { definitionCount: definitions.length, referenceCount, definitions, references, unresolvedReferences, unusedDefinitions };
3654
3654
  }
3655
+ var ARIA_GLOBAL_ATTRS = /* @__PURE__ */ new Set([
3656
+ "aria-atomic",
3657
+ "aria-busy",
3658
+ "aria-controls",
3659
+ "aria-current",
3660
+ "aria-describedby",
3661
+ "aria-details",
3662
+ "aria-disabled",
3663
+ "aria-dropeffect",
3664
+ "aria-errormessage",
3665
+ "aria-flowto",
3666
+ "aria-grabbed",
3667
+ "aria-haspopup",
3668
+ "aria-hidden",
3669
+ "aria-invalid",
3670
+ "aria-keyshortcuts",
3671
+ "aria-label",
3672
+ "aria-labelledby",
3673
+ "aria-live",
3674
+ "aria-owns",
3675
+ "aria-relevant",
3676
+ "aria-roledescription"
3677
+ ]);
3678
+ var ARIA_ROLE_TABLE = {
3679
+ alert: { supported: ["aria-live", "aria-atomic"] },
3680
+ alertdialog: { supported: ["aria-modal"] },
3681
+ article: {},
3682
+ banner: {},
3683
+ button: { supported: ["aria-pressed", "aria-expanded", "aria-disabled"] },
3684
+ checkbox: { required: ["aria-checked"], supported: ["aria-readonly"] },
3685
+ columnheader: { supported: ["aria-sort", "aria-selected", "aria-readonly"] },
3686
+ combobox: { required: ["aria-expanded"], supported: ["aria-controls", "aria-autocomplete", "aria-activedescendant"] },
3687
+ complementary: {},
3688
+ contentinfo: {},
3689
+ dialog: { supported: ["aria-modal"] },
3690
+ form: {},
3691
+ grid: { supported: ["aria-multiselectable", "aria-activedescendant", "aria-level", "aria-readonly"] },
3692
+ gridcell: { supported: ["aria-selected", "aria-readonly", "aria-expanded"] },
3693
+ group: { supported: ["aria-activedescendant", "aria-disabled"] },
3694
+ heading: { required: ["aria-level"] },
3695
+ img: {},
3696
+ link: { supported: ["aria-disabled", "aria-expanded"] },
3697
+ list: {},
3698
+ listbox: { supported: ["aria-multiselectable", "aria-activedescendant", "aria-orientation"] },
3699
+ listitem: { supported: ["aria-level", "aria-posinset", "aria-setsize"] },
3700
+ log: { supported: ["aria-live", "aria-atomic"] },
3701
+ main: {},
3702
+ marquee: {},
3703
+ menu: { supported: ["aria-orientation", "aria-activedescendant"] },
3704
+ menubar: { supported: ["aria-orientation", "aria-activedescendant"] },
3705
+ menuitem: { supported: ["aria-disabled"] },
3706
+ menuitemcheckbox: { required: ["aria-checked"] },
3707
+ menuitemradio: { required: ["aria-checked"] },
3708
+ meter: { required: ["aria-valuenow"], supported: ["aria-valuemin", "aria-valuemax", "aria-valuetext"] },
3709
+ navigation: {},
3710
+ none: {},
3711
+ option: { supported: ["aria-selected", "aria-checked", "aria-posinset", "aria-setsize"] },
3712
+ presentation: {},
3713
+ progressbar: { supported: ["aria-valuenow", "aria-valuemin", "aria-valuemax", "aria-valuetext"] },
3714
+ radio: { required: ["aria-checked"] },
3715
+ radiogroup: { supported: ["aria-activedescendant"] },
3716
+ region: {},
3717
+ row: { supported: ["aria-selected", "aria-level", "aria-expanded"] },
3718
+ rowheader: { supported: ["aria-sort", "aria-selected", "aria-readonly"] },
3719
+ scrollbar: { required: ["aria-valuenow", "aria-controls"], supported: ["aria-valuemin", "aria-valuemax", "aria-orientation"] },
3720
+ search: {},
3721
+ searchbox: { supported: ["aria-multiline", "aria-placeholder", "aria-readonly", "aria-required", "aria-activedescendant", "aria-autocomplete"] },
3722
+ separator: { supported: ["aria-orientation", "aria-valuenow", "aria-valuemin", "aria-valuemax"] },
3723
+ slider: { required: ["aria-valuenow"], supported: ["aria-valuemin", "aria-valuemax", "aria-valuetext", "aria-orientation"] },
3724
+ spinbutton: { supported: ["aria-valuenow", "aria-valuemin", "aria-valuemax", "aria-valuetext", "aria-required"] },
3725
+ status: { supported: ["aria-live", "aria-atomic"] },
3726
+ switch: { required: ["aria-checked"] },
3727
+ tab: { supported: ["aria-selected", "aria-controls", "aria-disabled"] },
3728
+ table: { supported: ["aria-colcount", "aria-rowcount"] },
3729
+ tablist: { supported: ["aria-orientation", "aria-activedescendant", "aria-level"] },
3730
+ tabpanel: {},
3731
+ textbox: { supported: ["aria-multiline", "aria-placeholder", "aria-readonly", "aria-required", "aria-activedescendant", "aria-autocomplete"] },
3732
+ timer: {},
3733
+ toolbar: { supported: ["aria-orientation"] },
3734
+ tooltip: {},
3735
+ tree: { supported: ["aria-multiselectable", "aria-activedescendant", "aria-orientation"] },
3736
+ treegrid: { supported: ["aria-multiselectable", "aria-activedescendant", "aria-orientation", "aria-level", "aria-readonly"] },
3737
+ treeitem: { supported: ["aria-expanded", "aria-selected", "aria-checked", "aria-level"] }
3738
+ };
3739
+ var ARIA_ALL_KNOWN_ATTRS = new Set(ARIA_GLOBAL_ATTRS);
3740
+ for (const entry of Object.values(ARIA_ROLE_TABLE)) {
3741
+ for (const a of entry.required ?? []) ARIA_ALL_KNOWN_ATTRS.add(a);
3742
+ for (const a of entry.supported ?? []) ARIA_ALL_KNOWN_ATTRS.add(a);
3743
+ }
3744
+ var TAG_REGEX = /<([a-zA-Z][a-zA-Z0-9]*)\b((?:[^>"'/]|"[^"]*"|'[^']*')*)\/?>/g;
3745
+ var ATTR_REGEX = /([a-zA-Z][a-zA-Z0-9-]*)\s*=\s*(?:"([^"]*)"|'([^']*)')/g;
3746
+ function parseElements(html) {
3747
+ const elements = [];
3748
+ let match;
3749
+ TAG_REGEX.lastIndex = 0;
3750
+ while ((match = TAG_REGEX.exec(html)) !== null) {
3751
+ const tag = match[1].toLowerCase();
3752
+ if (tag === "script" || tag === "style" || tag === "!--") continue;
3753
+ const attrsStr = match[2] ?? "";
3754
+ const attrs = {};
3755
+ let attrMatch;
3756
+ ATTR_REGEX.lastIndex = 0;
3757
+ while ((attrMatch = ATTR_REGEX.exec(attrsStr)) !== null) {
3758
+ const name = attrMatch[1].toLowerCase();
3759
+ const value = attrMatch[2] ?? attrMatch[3] ?? "";
3760
+ attrs[name] = value;
3761
+ }
3762
+ elements.push({ tag, attrs, raw: match[0].length > 80 ? match[0].slice(0, 77) + "..." : match[0] });
3763
+ }
3764
+ return elements;
3765
+ }
3766
+ function validateAria(html) {
3767
+ if (!html || !html.trim()) return { error: "Input is empty" };
3768
+ const elements = parseElements(html);
3769
+ if (elements.length === 0) return { error: "No HTML elements found" };
3770
+ const issues = [];
3771
+ let elementsWithRoleOrAria = 0;
3772
+ for (const el of elements) {
3773
+ const roleAttr = el.attrs["role"];
3774
+ const ariaAttrNames = Object.keys(el.attrs).filter((a) => a.startsWith("aria-"));
3775
+ if (roleAttr === void 0 && ariaAttrNames.length === 0) continue;
3776
+ elementsWithRoleOrAria++;
3777
+ const roles = roleAttr !== void 0 ? roleAttr.trim().split(/\s+/).filter(Boolean) : [];
3778
+ const knownRoles = roles.filter((r) => Object.prototype.hasOwnProperty.call(ARIA_ROLE_TABLE, r));
3779
+ const unknownRoles = roles.filter((r) => !Object.prototype.hasOwnProperty.call(ARIA_ROLE_TABLE, r));
3780
+ for (const r of unknownRoles) {
3781
+ issues.push({ element: el.raw, role: r, severity: "error", message: `Unknown ARIA role "${r}"` });
3782
+ }
3783
+ const primaryRole = knownRoles[0];
3784
+ const roleDef = primaryRole ? ARIA_ROLE_TABLE[primaryRole] : void 0;
3785
+ if (roleDef?.required) {
3786
+ for (const req of roleDef.required) {
3787
+ if (el.attrs[req] === void 0) {
3788
+ issues.push({ element: el.raw, role: primaryRole, severity: "error", message: `role="${primaryRole}" is missing required attribute ${req}` });
3789
+ }
3790
+ }
3791
+ }
3792
+ for (const attrName of ariaAttrNames) {
3793
+ if (ARIA_GLOBAL_ATTRS.has(attrName)) continue;
3794
+ if (roleDef) {
3795
+ const allowed = /* @__PURE__ */ new Set([...roleDef.required ?? [], ...roleDef.supported ?? []]);
3796
+ if (!allowed.has(attrName)) {
3797
+ issues.push({
3798
+ element: el.raw,
3799
+ role: primaryRole ?? null,
3800
+ severity: "error",
3801
+ message: primaryRole ? `${attrName} is not permitted on role="${primaryRole}"` : `${attrName} is not a global aria-* attribute`
3802
+ });
3803
+ }
3804
+ } else if (!ARIA_ALL_KNOWN_ATTRS.has(attrName)) {
3805
+ issues.push({ element: el.raw, role: null, severity: "warning", message: `${attrName} is not a recognized aria-* attribute (possible typo)` });
3806
+ }
3807
+ }
3808
+ }
3809
+ return {
3810
+ elementCount: elements.length,
3811
+ elementsWithRoleOrAria,
3812
+ issues,
3813
+ valid: issues.every((i) => i.severity !== "error")
3814
+ };
3815
+ }
3655
3816
 
3656
3817
  exports.ALL_FLAGS = ALL_FLAGS;
3657
3818
  exports.CHEATSHEET = CHEATSHEET;
@@ -3709,6 +3870,7 @@ exports.splitStatements = splitStatements;
3709
3870
  exports.testGitignorePatterns = testGitignorePatterns;
3710
3871
  exports.testPattern = testPattern;
3711
3872
  exports.testRegex = testRegex;
3873
+ exports.validateAria = validateAria;
3712
3874
  exports.validateEditorConfig = validateEditorConfig;
3713
3875
  exports.validateEnvKey = validateEnvKey;
3714
3876
  exports.validatePackageExports = validatePackageExports;
@@ -1 +1 @@
1
- export { A as ALL_FLAGS, a as ApiEndpoint, b as ApiInfo, C as CHEATSHEET, d as CheatsheetEntry, e as CommitTrailer, f as CommitTrailerResult, g as ConventionalCommitFinding, h as ConventionalCommitFooter, i as ConventionalCommitOptions, j as ConventionalCommitParsed, k as ConventionalCommitResult, l as ConventionalCommitSeverity, m as CssResult, D as DEFAULT_COMMIT_TYPES, n as DependencyAuditDuplicate, o as DependencyAuditEntry, p as DependencyAuditIssue, q as DependencyAuditResult, r as DependencyRangeType, s as DependencySection, t as DockerImageRef, E as EditorConfigIssue, u as EditorConfigProperty, v as EditorConfigSection, w as EditorConfigValidationResult, x as EnvEntry, y as EnvParseResult, z as ExportsIssue, B as ExportsShape, F as ExportsValidationResult, G as GitCommandConfig, H as GitCommandResult, I as GitOperation, J as GithubUrlInfo, K as GithubUrlType, L as GitignoreTestResult, M as GqlFormatResult, N as HtmlFormatResult, O as HtmlMinifyOptions, P as HtmlMinifyResult, Q as JsMinifyOptions, R as JsMinifyResult, S as MIME_TABLE, T as MarkdownFootnoteDefinition, U as MarkdownFootnoteReference, V as MarkdownFootnoteResult, W as MatchResult, X as MimeEntry, Y as MimeLookupResult, Z as OPERATIONS, _ as ParsedSpec, $ as RedosFinding, a0 as RedosResult, a1 as RedosSeverity, a2 as RegexBackreferenceInfo, a3 as RegexError, a4 as RegexFlag, a5 as RegexGroupAnalysis, a6 as RegexGroupInfo, a7 as RegexGroupIssue, a8 as RegexMatch, a9 as RegexResult, aa as RegexSuccess, ab as SQL_DEFAULT_OPTIONS, ac as Segment, ad as SpecVersion, ae as SqlDialect, af as SqlFormatOptions, ag as SvgSpriteResult, ah as SvgSpriteSymbol, ai as TestPatternResult, aj as TsconfigIssue, ak as TsconfigValidationResult, al as analyzeRegexGroups, am as auditDependencyRanges, an as buildDockerPull, ao as buildDockerRun, ap as buildGitCommand, aq as collapseHtmlWhitespace, ar as collapseJsWhitespace, as as countProperties, at as countRules, au as detectDialect, av as detectOperationType, aw as detectRedos, ax as envToExport, ay as envToJson, az as extractMarkdownFootnotes, aA as extractSvgSpriteSymbols, aB as formatCss, aC as formatGql, aD as formatHtml, aE as formatSql, aF as getEndpointsByTag, aG as getHtmlStats, aH as getJsStats, aI as getMethodColor, aJ as isValidTag, aK as lintConventionalCommit, aL as lookupMime, aM as minifyCss, aN as minifyGql, aO as minifyHtml, aP as minifyJs, aQ as minifySql, aR as normalizeRef, aS as parseCommitTrailers, aT as parseDockerImage, aU as parseEnv, aV as parseGitCommand, aW as parseGithubUrl, aX as parseSpec, aY as removeConsoleCalls, aZ as removeEmptyAttributes, a_ as removeHtmlComments, a$ as removeJsComments, b0 as removeRedundantAttributes, b1 as searchCheatsheet, b2 as searchEndpoints, b3 as splitStatements, b4 as testGitignorePatterns, b5 as testPattern, b6 as testRegex, b7 as validateEditorConfig, b8 as validateEnvKey, b9 as validatePackageExports, ba as validateTsconfig } from '../code-CoeD4Fmq.cjs';
1
+ export { A as ALL_FLAGS, a as ApiEndpoint, b as ApiInfo, d as AriaIssue, e as AriaValidationResult, C as CHEATSHEET, f as CheatsheetEntry, g as CommitTrailer, h as CommitTrailerResult, i as ConventionalCommitFinding, j as ConventionalCommitFooter, k as ConventionalCommitOptions, l as ConventionalCommitParsed, m as ConventionalCommitResult, n as ConventionalCommitSeverity, o as CssResult, D as DEFAULT_COMMIT_TYPES, p as DependencyAuditDuplicate, q as DependencyAuditEntry, r as DependencyAuditIssue, s as DependencyAuditResult, t as DependencyRangeType, u as DependencySection, v as DockerImageRef, E as EditorConfigIssue, w as EditorConfigProperty, x as EditorConfigSection, y as EditorConfigValidationResult, z as EnvEntry, B as EnvParseResult, F as ExportsIssue, G as ExportsShape, H as ExportsValidationResult, I as GitCommandConfig, J as GitCommandResult, K as GitOperation, L as GithubUrlInfo, M as GithubUrlType, N as GitignoreTestResult, O as GqlFormatResult, P as HtmlFormatResult, Q as HtmlMinifyOptions, R as HtmlMinifyResult, S as JsMinifyOptions, T as JsMinifyResult, U as MIME_TABLE, V as MarkdownFootnoteDefinition, W as MarkdownFootnoteReference, X as MarkdownFootnoteResult, Y as MatchResult, Z as MimeEntry, _ as MimeLookupResult, $ as OPERATIONS, a0 as ParsedSpec, a1 as RedosFinding, a2 as RedosResult, a3 as RedosSeverity, a4 as RegexBackreferenceInfo, a5 as RegexError, a6 as RegexFlag, a7 as RegexGroupAnalysis, a8 as RegexGroupInfo, a9 as RegexGroupIssue, aa as RegexMatch, ab as RegexResult, ac as RegexSuccess, ad as SQL_DEFAULT_OPTIONS, ae as Segment, af as SpecVersion, ag as SqlDialect, ah as SqlFormatOptions, ai as SvgSpriteResult, aj as SvgSpriteSymbol, ak as TestPatternResult, al as TsconfigIssue, am as TsconfigValidationResult, an as analyzeRegexGroups, ao as auditDependencyRanges, ap as buildDockerPull, aq as buildDockerRun, ar as buildGitCommand, as as collapseHtmlWhitespace, at as collapseJsWhitespace, au as countProperties, av as countRules, aw as detectDialect, ax as detectOperationType, ay as detectRedos, az as envToExport, aA as envToJson, aB as extractMarkdownFootnotes, aC as extractSvgSpriteSymbols, aD as formatCss, aE as formatGql, aF as formatHtml, aG as formatSql, aH as getEndpointsByTag, aI as getHtmlStats, aJ as getJsStats, aK as getMethodColor, aL as isValidTag, aM as lintConventionalCommit, aN as lookupMime, aO as minifyCss, aP as minifyGql, aQ as minifyHtml, aR as minifyJs, aS as minifySql, aT as normalizeRef, aU as parseCommitTrailers, aV as parseDockerImage, aW as parseEnv, aX as parseGitCommand, aY as parseGithubUrl, aZ as parseSpec, a_ as removeConsoleCalls, a$ as removeEmptyAttributes, b0 as removeHtmlComments, b1 as removeJsComments, b2 as removeRedundantAttributes, b3 as searchCheatsheet, b4 as searchEndpoints, b5 as splitStatements, b6 as testGitignorePatterns, b7 as testPattern, b8 as testRegex, b9 as validateAria, ba as validateEditorConfig, bb as validateEnvKey, bc as validatePackageExports, bd as validateTsconfig } from '../code-46xO9xFf.cjs';
@@ -1 +1 @@
1
- export { A as ALL_FLAGS, a as ApiEndpoint, b as ApiInfo, C as CHEATSHEET, d as CheatsheetEntry, e as CommitTrailer, f as CommitTrailerResult, g as ConventionalCommitFinding, h as ConventionalCommitFooter, i as ConventionalCommitOptions, j as ConventionalCommitParsed, k as ConventionalCommitResult, l as ConventionalCommitSeverity, m as CssResult, D as DEFAULT_COMMIT_TYPES, n as DependencyAuditDuplicate, o as DependencyAuditEntry, p as DependencyAuditIssue, q as DependencyAuditResult, r as DependencyRangeType, s as DependencySection, t as DockerImageRef, E as EditorConfigIssue, u as EditorConfigProperty, v as EditorConfigSection, w as EditorConfigValidationResult, x as EnvEntry, y as EnvParseResult, z as ExportsIssue, B as ExportsShape, F as ExportsValidationResult, G as GitCommandConfig, H as GitCommandResult, I as GitOperation, J as GithubUrlInfo, K as GithubUrlType, L as GitignoreTestResult, M as GqlFormatResult, N as HtmlFormatResult, O as HtmlMinifyOptions, P as HtmlMinifyResult, Q as JsMinifyOptions, R as JsMinifyResult, S as MIME_TABLE, T as MarkdownFootnoteDefinition, U as MarkdownFootnoteReference, V as MarkdownFootnoteResult, W as MatchResult, X as MimeEntry, Y as MimeLookupResult, Z as OPERATIONS, _ as ParsedSpec, $ as RedosFinding, a0 as RedosResult, a1 as RedosSeverity, a2 as RegexBackreferenceInfo, a3 as RegexError, a4 as RegexFlag, a5 as RegexGroupAnalysis, a6 as RegexGroupInfo, a7 as RegexGroupIssue, a8 as RegexMatch, a9 as RegexResult, aa as RegexSuccess, ab as SQL_DEFAULT_OPTIONS, ac as Segment, ad as SpecVersion, ae as SqlDialect, af as SqlFormatOptions, ag as SvgSpriteResult, ah as SvgSpriteSymbol, ai as TestPatternResult, aj as TsconfigIssue, ak as TsconfigValidationResult, al as analyzeRegexGroups, am as auditDependencyRanges, an as buildDockerPull, ao as buildDockerRun, ap as buildGitCommand, aq as collapseHtmlWhitespace, ar as collapseJsWhitespace, as as countProperties, at as countRules, au as detectDialect, av as detectOperationType, aw as detectRedos, ax as envToExport, ay as envToJson, az as extractMarkdownFootnotes, aA as extractSvgSpriteSymbols, aB as formatCss, aC as formatGql, aD as formatHtml, aE as formatSql, aF as getEndpointsByTag, aG as getHtmlStats, aH as getJsStats, aI as getMethodColor, aJ as isValidTag, aK as lintConventionalCommit, aL as lookupMime, aM as minifyCss, aN as minifyGql, aO as minifyHtml, aP as minifyJs, aQ as minifySql, aR as normalizeRef, aS as parseCommitTrailers, aT as parseDockerImage, aU as parseEnv, aV as parseGitCommand, aW as parseGithubUrl, aX as parseSpec, aY as removeConsoleCalls, aZ as removeEmptyAttributes, a_ as removeHtmlComments, a$ as removeJsComments, b0 as removeRedundantAttributes, b1 as searchCheatsheet, b2 as searchEndpoints, b3 as splitStatements, b4 as testGitignorePatterns, b5 as testPattern, b6 as testRegex, b7 as validateEditorConfig, b8 as validateEnvKey, b9 as validatePackageExports, ba as validateTsconfig } from '../code-CoeD4Fmq.js';
1
+ export { A as ALL_FLAGS, a as ApiEndpoint, b as ApiInfo, d as AriaIssue, e as AriaValidationResult, C as CHEATSHEET, f as CheatsheetEntry, g as CommitTrailer, h as CommitTrailerResult, i as ConventionalCommitFinding, j as ConventionalCommitFooter, k as ConventionalCommitOptions, l as ConventionalCommitParsed, m as ConventionalCommitResult, n as ConventionalCommitSeverity, o as CssResult, D as DEFAULT_COMMIT_TYPES, p as DependencyAuditDuplicate, q as DependencyAuditEntry, r as DependencyAuditIssue, s as DependencyAuditResult, t as DependencyRangeType, u as DependencySection, v as DockerImageRef, E as EditorConfigIssue, w as EditorConfigProperty, x as EditorConfigSection, y as EditorConfigValidationResult, z as EnvEntry, B as EnvParseResult, F as ExportsIssue, G as ExportsShape, H as ExportsValidationResult, I as GitCommandConfig, J as GitCommandResult, K as GitOperation, L as GithubUrlInfo, M as GithubUrlType, N as GitignoreTestResult, O as GqlFormatResult, P as HtmlFormatResult, Q as HtmlMinifyOptions, R as HtmlMinifyResult, S as JsMinifyOptions, T as JsMinifyResult, U as MIME_TABLE, V as MarkdownFootnoteDefinition, W as MarkdownFootnoteReference, X as MarkdownFootnoteResult, Y as MatchResult, Z as MimeEntry, _ as MimeLookupResult, $ as OPERATIONS, a0 as ParsedSpec, a1 as RedosFinding, a2 as RedosResult, a3 as RedosSeverity, a4 as RegexBackreferenceInfo, a5 as RegexError, a6 as RegexFlag, a7 as RegexGroupAnalysis, a8 as RegexGroupInfo, a9 as RegexGroupIssue, aa as RegexMatch, ab as RegexResult, ac as RegexSuccess, ad as SQL_DEFAULT_OPTIONS, ae as Segment, af as SpecVersion, ag as SqlDialect, ah as SqlFormatOptions, ai as SvgSpriteResult, aj as SvgSpriteSymbol, ak as TestPatternResult, al as TsconfigIssue, am as TsconfigValidationResult, an as analyzeRegexGroups, ao as auditDependencyRanges, ap as buildDockerPull, aq as buildDockerRun, ar as buildGitCommand, as as collapseHtmlWhitespace, at as collapseJsWhitespace, au as countProperties, av as countRules, aw as detectDialect, ax as detectOperationType, ay as detectRedos, az as envToExport, aA as envToJson, aB as extractMarkdownFootnotes, aC as extractSvgSpriteSymbols, aD as formatCss, aE as formatGql, aF as formatHtml, aG as formatSql, aH as getEndpointsByTag, aI as getHtmlStats, aJ as getJsStats, aK as getMethodColor, aL as isValidTag, aM as lintConventionalCommit, aN as lookupMime, aO as minifyCss, aP as minifyGql, aQ as minifyHtml, aR as minifyJs, aS as minifySql, aT as normalizeRef, aU as parseCommitTrailers, aV as parseDockerImage, aW as parseEnv, aX as parseGitCommand, aY as parseGithubUrl, aZ as parseSpec, a_ as removeConsoleCalls, a$ as removeEmptyAttributes, b0 as removeHtmlComments, b1 as removeJsComments, b2 as removeRedundantAttributes, b3 as searchCheatsheet, b4 as searchEndpoints, b5 as splitStatements, b6 as testGitignorePatterns, b7 as testPattern, b8 as testRegex, b9 as validateAria, ba as validateEditorConfig, bb as validateEnvKey, bc as validatePackageExports, bd as validateTsconfig } from '../code-46xO9xFf.js';
@@ -1,2 +1,2 @@
1
- export { ALL_FLAGS, CHEATSHEET, DEFAULT_COMMIT_TYPES, MIME_TABLE, OPERATIONS, SQL_DEFAULT_OPTIONS, analyzeRegexGroups, auditDependencyRanges, buildDockerPull, buildDockerRun, buildGitCommand, collapseHtmlWhitespace, collapseJsWhitespace, countProperties, countRules, detectDialect, detectOperationType, detectRedos, envToExport, envToJson, extractMarkdownFootnotes, extractSvgSpriteSymbols, formatCss, formatGql, formatHtml, formatSql, getEndpointsByTag, getHtmlStats, getJsStats, getMethodColor, isValidTag, lintConventionalCommit, lookupMime, minifyCss, minifyGql, minifyHtml, minifyJs, minifySql, normalizeRef, parseCommitTrailers, parseDockerImage, parseEnv, parseGitCommand, parseGithubUrl, parseSpec, removeConsoleCalls, removeEmptyAttributes, removeHtmlComments, removeJsComments, removeRedundantAttributes, searchCheatsheet, searchEndpoints, splitStatements, testGitignorePatterns, testPattern, testRegex, validateEditorConfig, validateEnvKey, validatePackageExports, validateTsconfig } from '../chunk-DAD2ZOTJ.js';
1
+ export { ALL_FLAGS, CHEATSHEET, DEFAULT_COMMIT_TYPES, MIME_TABLE, OPERATIONS, SQL_DEFAULT_OPTIONS, analyzeRegexGroups, auditDependencyRanges, buildDockerPull, buildDockerRun, buildGitCommand, collapseHtmlWhitespace, collapseJsWhitespace, countProperties, countRules, detectDialect, detectOperationType, detectRedos, envToExport, envToJson, extractMarkdownFootnotes, extractSvgSpriteSymbols, formatCss, formatGql, formatHtml, formatSql, getEndpointsByTag, getHtmlStats, getJsStats, getMethodColor, isValidTag, lintConventionalCommit, lookupMime, minifyCss, minifyGql, minifyHtml, minifyJs, minifySql, normalizeRef, parseCommitTrailers, parseDockerImage, parseEnv, parseGitCommand, parseGithubUrl, parseSpec, removeConsoleCalls, removeEmptyAttributes, removeHtmlComments, removeJsComments, removeRedundantAttributes, searchCheatsheet, searchEndpoints, splitStatements, testGitignorePatterns, testPattern, testRegex, validateAria, validateEditorConfig, validateEnvKey, validatePackageExports, validateTsconfig } from '../chunk-XT2BQWXT.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -3398,6 +3398,36 @@ function parseRobotsMetaTag(raw) {
3398
3398
  }
3399
3399
  return buildRobotsMetaTag({ flags, maxSnippet, maxImagePreview, maxVideoPreview, unavailableAfter, name });
3400
3400
  }
3401
+ var PER_COOKIE_BYTE_LIMIT = 4096;
3402
+ var DEFAULT_COOKIE_BUDGET_BYTES = 4096;
3403
+ function calculateCookieSizeBudget(cookieHeader, budgetBytes = DEFAULT_COOKIE_BUDGET_BYTES) {
3404
+ if (typeof cookieHeader !== "string" || !cookieHeader.trim()) {
3405
+ return { error: "A Cookie header value is required" };
3406
+ }
3407
+ if (!Number.isFinite(budgetBytes) || budgetBytes <= 0) {
3408
+ return { error: "Budget must be a positive number of bytes" };
3409
+ }
3410
+ const parts = cookieHeader.split(";").map((p) => p.trim()).filter(Boolean);
3411
+ if (parts.length === 0) return { error: "A Cookie header value is required" };
3412
+ const cookies = [];
3413
+ for (const part of parts) {
3414
+ const eq = part.indexOf("=");
3415
+ if (eq === -1) return { error: `Malformed cookie pair "${part}" is missing '='` };
3416
+ const name = part.slice(0, eq).trim();
3417
+ const value = part.slice(eq + 1).trim();
3418
+ if (!name) return { error: "Cookie name cannot be empty" };
3419
+ const bytes = Buffer.byteLength(`${name}=${value}`, "utf8");
3420
+ cookies.push({ name, value, bytes, exceedsPerCookieLimit: bytes > PER_COOKIE_BYTE_LIMIT });
3421
+ }
3422
+ const totalBytes = cookies.reduce((sum, c) => sum + c.bytes, 0) + Math.max(cookies.length - 1, 0) * 2;
3423
+ return {
3424
+ cookies,
3425
+ cookieCount: cookies.length,
3426
+ totalBytes,
3427
+ budgetBytes,
3428
+ exceedsBudget: totalBytes > budgetBytes
3429
+ };
3430
+ }
3401
3431
 
3402
3432
  exports.CLIENT_HINTS = CLIENT_HINTS;
3403
3433
  exports.DNS_RECORD_TYPES = DNS_RECORD_TYPES;
@@ -3428,6 +3458,7 @@ exports.buildRobotsMetaTag = buildRobotsMetaTag;
3428
3458
  exports.buildVaryHeader = buildVaryHeader;
3429
3459
  exports.buildXContentTypeOptionsHeader = buildXContentTypeOptionsHeader;
3430
3460
  exports.buildXRobotsTag = buildXRobotsTag;
3461
+ exports.calculateCookieSizeBudget = calculateCookieSizeBudget;
3431
3462
  exports.checkSetCookieHeader = checkSetCookieHeader;
3432
3463
  exports.countryCodeToFlag = countryCodeToFlag;
3433
3464
  exports.extractMultipartBoundary = extractMultipartBoundary;
@@ -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 CloseCodeInfo, k as CloseCodeRange, l as ContentDispositionBuildOptions, m as ContentDispositionBuildResult, o as ContentDispositionParseResult, p as ContentRangeResult, q as ContentTypeRiskResult, r as ContentTypeSniffRisk, s as CookieAttributes, t as CookieCheckResult, D as DNS_RECORD_TYPES, u as DnsRecord, v as DnsRecordType, w as DnsResponse, E as EmailHeaderAnalysis, x as EmailHeaderField, G as GeoResult, H as HTTP_HEADERS, y as HarEntry, z as HarParseResult, F as HarSummary, I as HeaderCategory, J as HstsOptions, K as HstsResult, L as HttpHeader, M as Ipv6AddressType, N as Ipv6ParseResult, O as LINK_REL_VALUES, P as LinkHeaderEntry, Q as LinkHeaderEntryInput, R as LinkHeaderResult, S as LinkRel, T as ManifestIconInfo, U as ManifestIssue, V as ManifestValidationResult, W as MultipartParseResult, X as MultipartPart, Y as OpcodeCategory, Z as OpcodeInfo, _ as PERMISSIONS_POLICY_FEATURES, $ as ParsedClientHint, a0 as ParsedDnsResult, a1 as ParsedGeoResult, a2 as PermissionsPolicyDirective, a3 as PermissionsPolicyFeatureInput, a4 as PermissionsPolicyResult, a5 as PreferParameter, a6 as PreferPreference, a7 as PreferResult, a8 as PriorityResult, a9 as REFERRER_POLICY_VALUES, aa as RangeEntry, ab as RangeEntryInput, ac as RangeHeaderResult, ad as ReceivedHop, ae as ReferrerPolicyEntry, af as ReferrerPolicyResult, ag as ReferrerPolicyValue, ah as RetryAfterDateResult, ai as RetryAfterResult, aj as RetryAfterSecondsResult, ak as RobotsGroup, al as RobotsIssue, am as RobotsMetaTagFlag, an as RobotsMetaTagOptions, ao as RobotsMetaTagResult, ap as RobotsRule, aq as RobotsValidationResult, ar as STATUS_CODES, as as SameSiteValue, at as SitemapIndexEntry, au as SitemapIssue, av as SitemapSplitFile, aw as SitemapUrlEntry, ax as SitemapValidationResult, ay as SplitSitemapOptions, az as SplitSitemapResult, aA as StatusCode, aB as UaDeviceType, aC as UserAgentInfo, aD as VaryHeaderEntry, aE as VaryHeaderResult, aF as XContentTypeOptionsHeader, aG as XContentTypeOptionsParseResult, aH as XRobotsTagFlag, aI as XRobotsTagOptions, aJ as XRobotsTagResult, aK as X_CONTENT_TYPE_OPTIONS_HEADER, aL as analyzeEmailHeaders, aM as assessContentTypeRisk, aN as buildAcceptLanguage, aO as buildCacheControl, aP as buildClientHints, aQ as buildContentDisposition, aR as buildDnsQueryUrl, aS as buildGeoUrl, aT as buildHsts, aU as buildLinkHeader, aV as buildMapUrl, aW as buildPermissionsPolicy, aX as buildPreferHeader, aY as buildPriorityHeader, aZ as buildRangeHeader, a_ as buildReferrerPolicy, a$ as buildRetryAfterHeader, b0 as buildRobotsMetaTag, b1 as buildVaryHeader, b2 as buildXContentTypeOptionsHeader, b3 as buildXRobotsTag, b4 as checkSetCookieHeader, b5 as countryCodeToFlag, b6 as extractMultipartBoundary, b7 as formatCoordinates, b8 as formatTtl, b9 as getByCategory, ba as getHeader, bb as getHeadersByCategory, bc as getStatusByCategory, bd as getStatusCode, be as isClientError, bf as isServerError, bg as isSuccess, bh as isValidIp, bi as isValidIpv4, bj as isValidIpv6, bk as listCloseCodes, bl as listOpcodes, bm as lookupCloseCode, bn as lookupOpcode, bo as parseAcceptLanguage, bp as parseClientHintHeaders, bq as parseContentDisposition, br as parseContentRangeHeader, bs as parseDnsResponse, bt as parseGeoResponse, bu as parseHar, bv as parseHsts, bw as parseIpv6Address, bx as parseMultipartFormData, by as parsePermissionsPolicy, bz as parsePreferHeader, bA as parsePriorityHeader, bB as parseRetryAfterHeader, bC as parseRobotsMetaTag, bD as parseUserAgent, bE as parseVaryHeader, bF as parseXContentTypeOptionsHeader, bG as parseXRobotsTag, bH as searchHeaders, bI as searchStatusCodes, bJ as splitSitemap, bK as statusCodeToText, bL as typeNumberToLabel, bM as validateDomain, bN as validateHeaderName, bO as validateHeaderValue, bP as validateManifest, bQ as validateRobotsTxt, bR as validateSitemap } from '../network-BmqYmfqY.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 CloseCodeInfo, k as CloseCodeRange, l as ContentDispositionBuildOptions, m as ContentDispositionBuildResult, o as ContentDispositionParseResult, p as ContentRangeResult, q as ContentTypeRiskResult, r as ContentTypeSniffRisk, s as CookieAttributes, t as CookieCheckResult, u as CookieSizeBudgetResult, v as CookieSizeEntry, D as DNS_RECORD_TYPES, w as DnsRecord, x as DnsRecordType, y as DnsResponse, E as EmailHeaderAnalysis, z as EmailHeaderField, G as GeoResult, H as HTTP_HEADERS, F as HarEntry, I as HarParseResult, J as HarSummary, K as HeaderCategory, L as HstsOptions, M as HstsResult, N as HttpHeader, O as Ipv6AddressType, P as Ipv6ParseResult, Q as LINK_REL_VALUES, R as LinkHeaderEntry, S as LinkHeaderEntryInput, T as LinkHeaderResult, U as LinkRel, V as ManifestIconInfo, W as ManifestIssue, X as ManifestValidationResult, Y as MultipartParseResult, Z as MultipartPart, _ as OpcodeCategory, $ as OpcodeInfo, a0 as PERMISSIONS_POLICY_FEATURES, a1 as ParsedClientHint, a2 as ParsedDnsResult, a3 as ParsedGeoResult, a4 as PermissionsPolicyDirective, a5 as PermissionsPolicyFeatureInput, a6 as PermissionsPolicyResult, a7 as PreferParameter, a8 as PreferPreference, a9 as PreferResult, aa as PriorityResult, ab as REFERRER_POLICY_VALUES, ac as RangeEntry, ad as RangeEntryInput, ae as RangeHeaderResult, af as ReceivedHop, ag as ReferrerPolicyEntry, ah as ReferrerPolicyResult, ai as ReferrerPolicyValue, aj as RetryAfterDateResult, ak as RetryAfterResult, al as RetryAfterSecondsResult, am as RobotsGroup, an as RobotsIssue, ao as RobotsMetaTagFlag, ap as RobotsMetaTagOptions, aq as RobotsMetaTagResult, ar as RobotsRule, as as RobotsValidationResult, at as STATUS_CODES, au as SameSiteValue, av as SitemapIndexEntry, aw as SitemapIssue, ax as SitemapSplitFile, ay as SitemapUrlEntry, az as SitemapValidationResult, aA as SplitSitemapOptions, aB as SplitSitemapResult, aC as StatusCode, aD as UaDeviceType, aE as UserAgentInfo, aF as VaryHeaderEntry, aG as VaryHeaderResult, aH as XContentTypeOptionsHeader, aI as XContentTypeOptionsParseResult, aJ as XRobotsTagFlag, aK as XRobotsTagOptions, aL as XRobotsTagResult, aM as X_CONTENT_TYPE_OPTIONS_HEADER, aN as analyzeEmailHeaders, aO as assessContentTypeRisk, aP as buildAcceptLanguage, aQ as buildCacheControl, aR as buildClientHints, aS as buildContentDisposition, aT as buildDnsQueryUrl, aU as buildGeoUrl, aV as buildHsts, aW as buildLinkHeader, aX as buildMapUrl, aY as buildPermissionsPolicy, aZ as buildPreferHeader, a_ as buildPriorityHeader, a$ as buildRangeHeader, b0 as buildReferrerPolicy, b1 as buildRetryAfterHeader, b2 as buildRobotsMetaTag, b3 as buildVaryHeader, b4 as buildXContentTypeOptionsHeader, b5 as buildXRobotsTag, b6 as calculateCookieSizeBudget, b7 as checkSetCookieHeader, b8 as countryCodeToFlag, b9 as extractMultipartBoundary, ba as formatCoordinates, bb as formatTtl, bc as getByCategory, bd as getHeader, be as getHeadersByCategory, bf as getStatusByCategory, bg as getStatusCode, bh as isClientError, bi as isServerError, bj as isSuccess, bk as isValidIp, bl as isValidIpv4, bm as isValidIpv6, bn as listCloseCodes, bo as listOpcodes, bp as lookupCloseCode, bq as lookupOpcode, br as parseAcceptLanguage, bs as parseClientHintHeaders, bt as parseContentDisposition, bu as parseContentRangeHeader, bv as parseDnsResponse, bw as parseGeoResponse, bx as parseHar, by as parseHsts, bz as parseIpv6Address, bA as parseMultipartFormData, bB as parsePermissionsPolicy, bC as parsePreferHeader, bD as parsePriorityHeader, bE as parseRetryAfterHeader, bF as parseRobotsMetaTag, bG as parseUserAgent, bH as parseVaryHeader, bI as parseXContentTypeOptionsHeader, bJ as parseXRobotsTag, bK as searchHeaders, bL as searchStatusCodes, bM as splitSitemap, bN as statusCodeToText, bO as typeNumberToLabel, bP as validateDomain, bQ as validateHeaderName, bR as validateHeaderValue, bS as validateManifest, bT as validateRobotsTxt, bU as validateSitemap } from '../network-Da3meCWM.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 CloseCodeInfo, k as CloseCodeRange, l as ContentDispositionBuildOptions, m as ContentDispositionBuildResult, o as ContentDispositionParseResult, p as ContentRangeResult, q as ContentTypeRiskResult, r as ContentTypeSniffRisk, s as CookieAttributes, t as CookieCheckResult, D as DNS_RECORD_TYPES, u as DnsRecord, v as DnsRecordType, w as DnsResponse, E as EmailHeaderAnalysis, x as EmailHeaderField, G as GeoResult, H as HTTP_HEADERS, y as HarEntry, z as HarParseResult, F as HarSummary, I as HeaderCategory, J as HstsOptions, K as HstsResult, L as HttpHeader, M as Ipv6AddressType, N as Ipv6ParseResult, O as LINK_REL_VALUES, P as LinkHeaderEntry, Q as LinkHeaderEntryInput, R as LinkHeaderResult, S as LinkRel, T as ManifestIconInfo, U as ManifestIssue, V as ManifestValidationResult, W as MultipartParseResult, X as MultipartPart, Y as OpcodeCategory, Z as OpcodeInfo, _ as PERMISSIONS_POLICY_FEATURES, $ as ParsedClientHint, a0 as ParsedDnsResult, a1 as ParsedGeoResult, a2 as PermissionsPolicyDirective, a3 as PermissionsPolicyFeatureInput, a4 as PermissionsPolicyResult, a5 as PreferParameter, a6 as PreferPreference, a7 as PreferResult, a8 as PriorityResult, a9 as REFERRER_POLICY_VALUES, aa as RangeEntry, ab as RangeEntryInput, ac as RangeHeaderResult, ad as ReceivedHop, ae as ReferrerPolicyEntry, af as ReferrerPolicyResult, ag as ReferrerPolicyValue, ah as RetryAfterDateResult, ai as RetryAfterResult, aj as RetryAfterSecondsResult, ak as RobotsGroup, al as RobotsIssue, am as RobotsMetaTagFlag, an as RobotsMetaTagOptions, ao as RobotsMetaTagResult, ap as RobotsRule, aq as RobotsValidationResult, ar as STATUS_CODES, as as SameSiteValue, at as SitemapIndexEntry, au as SitemapIssue, av as SitemapSplitFile, aw as SitemapUrlEntry, ax as SitemapValidationResult, ay as SplitSitemapOptions, az as SplitSitemapResult, aA as StatusCode, aB as UaDeviceType, aC as UserAgentInfo, aD as VaryHeaderEntry, aE as VaryHeaderResult, aF as XContentTypeOptionsHeader, aG as XContentTypeOptionsParseResult, aH as XRobotsTagFlag, aI as XRobotsTagOptions, aJ as XRobotsTagResult, aK as X_CONTENT_TYPE_OPTIONS_HEADER, aL as analyzeEmailHeaders, aM as assessContentTypeRisk, aN as buildAcceptLanguage, aO as buildCacheControl, aP as buildClientHints, aQ as buildContentDisposition, aR as buildDnsQueryUrl, aS as buildGeoUrl, aT as buildHsts, aU as buildLinkHeader, aV as buildMapUrl, aW as buildPermissionsPolicy, aX as buildPreferHeader, aY as buildPriorityHeader, aZ as buildRangeHeader, a_ as buildReferrerPolicy, a$ as buildRetryAfterHeader, b0 as buildRobotsMetaTag, b1 as buildVaryHeader, b2 as buildXContentTypeOptionsHeader, b3 as buildXRobotsTag, b4 as checkSetCookieHeader, b5 as countryCodeToFlag, b6 as extractMultipartBoundary, b7 as formatCoordinates, b8 as formatTtl, b9 as getByCategory, ba as getHeader, bb as getHeadersByCategory, bc as getStatusByCategory, bd as getStatusCode, be as isClientError, bf as isServerError, bg as isSuccess, bh as isValidIp, bi as isValidIpv4, bj as isValidIpv6, bk as listCloseCodes, bl as listOpcodes, bm as lookupCloseCode, bn as lookupOpcode, bo as parseAcceptLanguage, bp as parseClientHintHeaders, bq as parseContentDisposition, br as parseContentRangeHeader, bs as parseDnsResponse, bt as parseGeoResponse, bu as parseHar, bv as parseHsts, bw as parseIpv6Address, bx as parseMultipartFormData, by as parsePermissionsPolicy, bz as parsePreferHeader, bA as parsePriorityHeader, bB as parseRetryAfterHeader, bC as parseRobotsMetaTag, bD as parseUserAgent, bE as parseVaryHeader, bF as parseXContentTypeOptionsHeader, bG as parseXRobotsTag, bH as searchHeaders, bI as searchStatusCodes, bJ as splitSitemap, bK as statusCodeToText, bL as typeNumberToLabel, bM as validateDomain, bN as validateHeaderName, bO as validateHeaderValue, bP as validateManifest, bQ as validateRobotsTxt, bR as validateSitemap } from '../network-BmqYmfqY.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 CloseCodeInfo, k as CloseCodeRange, l as ContentDispositionBuildOptions, m as ContentDispositionBuildResult, o as ContentDispositionParseResult, p as ContentRangeResult, q as ContentTypeRiskResult, r as ContentTypeSniffRisk, s as CookieAttributes, t as CookieCheckResult, u as CookieSizeBudgetResult, v as CookieSizeEntry, D as DNS_RECORD_TYPES, w as DnsRecord, x as DnsRecordType, y as DnsResponse, E as EmailHeaderAnalysis, z as EmailHeaderField, G as GeoResult, H as HTTP_HEADERS, F as HarEntry, I as HarParseResult, J as HarSummary, K as HeaderCategory, L as HstsOptions, M as HstsResult, N as HttpHeader, O as Ipv6AddressType, P as Ipv6ParseResult, Q as LINK_REL_VALUES, R as LinkHeaderEntry, S as LinkHeaderEntryInput, T as LinkHeaderResult, U as LinkRel, V as ManifestIconInfo, W as ManifestIssue, X as ManifestValidationResult, Y as MultipartParseResult, Z as MultipartPart, _ as OpcodeCategory, $ as OpcodeInfo, a0 as PERMISSIONS_POLICY_FEATURES, a1 as ParsedClientHint, a2 as ParsedDnsResult, a3 as ParsedGeoResult, a4 as PermissionsPolicyDirective, a5 as PermissionsPolicyFeatureInput, a6 as PermissionsPolicyResult, a7 as PreferParameter, a8 as PreferPreference, a9 as PreferResult, aa as PriorityResult, ab as REFERRER_POLICY_VALUES, ac as RangeEntry, ad as RangeEntryInput, ae as RangeHeaderResult, af as ReceivedHop, ag as ReferrerPolicyEntry, ah as ReferrerPolicyResult, ai as ReferrerPolicyValue, aj as RetryAfterDateResult, ak as RetryAfterResult, al as RetryAfterSecondsResult, am as RobotsGroup, an as RobotsIssue, ao as RobotsMetaTagFlag, ap as RobotsMetaTagOptions, aq as RobotsMetaTagResult, ar as RobotsRule, as as RobotsValidationResult, at as STATUS_CODES, au as SameSiteValue, av as SitemapIndexEntry, aw as SitemapIssue, ax as SitemapSplitFile, ay as SitemapUrlEntry, az as SitemapValidationResult, aA as SplitSitemapOptions, aB as SplitSitemapResult, aC as StatusCode, aD as UaDeviceType, aE as UserAgentInfo, aF as VaryHeaderEntry, aG as VaryHeaderResult, aH as XContentTypeOptionsHeader, aI as XContentTypeOptionsParseResult, aJ as XRobotsTagFlag, aK as XRobotsTagOptions, aL as XRobotsTagResult, aM as X_CONTENT_TYPE_OPTIONS_HEADER, aN as analyzeEmailHeaders, aO as assessContentTypeRisk, aP as buildAcceptLanguage, aQ as buildCacheControl, aR as buildClientHints, aS as buildContentDisposition, aT as buildDnsQueryUrl, aU as buildGeoUrl, aV as buildHsts, aW as buildLinkHeader, aX as buildMapUrl, aY as buildPermissionsPolicy, aZ as buildPreferHeader, a_ as buildPriorityHeader, a$ as buildRangeHeader, b0 as buildReferrerPolicy, b1 as buildRetryAfterHeader, b2 as buildRobotsMetaTag, b3 as buildVaryHeader, b4 as buildXContentTypeOptionsHeader, b5 as buildXRobotsTag, b6 as calculateCookieSizeBudget, b7 as checkSetCookieHeader, b8 as countryCodeToFlag, b9 as extractMultipartBoundary, ba as formatCoordinates, bb as formatTtl, bc as getByCategory, bd as getHeader, be as getHeadersByCategory, bf as getStatusByCategory, bg as getStatusCode, bh as isClientError, bi as isServerError, bj as isSuccess, bk as isValidIp, bl as isValidIpv4, bm as isValidIpv6, bn as listCloseCodes, bo as listOpcodes, bp as lookupCloseCode, bq as lookupOpcode, br as parseAcceptLanguage, bs as parseClientHintHeaders, bt as parseContentDisposition, bu as parseContentRangeHeader, bv as parseDnsResponse, bw as parseGeoResponse, bx as parseHar, by as parseHsts, bz as parseIpv6Address, bA as parseMultipartFormData, bB as parsePermissionsPolicy, bC as parsePreferHeader, bD as parsePriorityHeader, bE as parseRetryAfterHeader, bF as parseRobotsMetaTag, bG as parseUserAgent, bH as parseVaryHeader, bI as parseXContentTypeOptionsHeader, bJ as parseXRobotsTag, bK as searchHeaders, bL as searchStatusCodes, bM as splitSitemap, bN as statusCodeToText, bO as typeNumberToLabel, bP as validateDomain, bQ as validateHeaderName, bR as validateHeaderValue, bS as validateManifest, bT as validateRobotsTxt, bU as validateSitemap } from '../network-Da3meCWM.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, buildHsts, buildLinkHeader, buildMapUrl, buildPermissionsPolicy, buildPreferHeader, buildPriorityHeader, buildRangeHeader, buildReferrerPolicy, buildRetryAfterHeader, buildRobotsMetaTag, buildVaryHeader, buildXContentTypeOptionsHeader, buildXRobotsTag, checkSetCookieHeader, countryCodeToFlag, extractMultipartBoundary, formatCoordinates, formatTtl, getByCategory, getHeader, getHeadersByCategory, getStatusByCategory, getStatusCode, isClientError, isServerError, isSuccess, isValidIp, isValidIpv4, isValidIpv6, listCloseCodes, listOpcodes, lookupCloseCode, lookupOpcode, parseAcceptLanguage, parseClientHintHeaders, parseContentDisposition, parseContentRangeHeader, parseDnsResponse, parseGeoResponse, parseHar, parseHsts, parseIpv6Address, parseMultipartFormData, parsePermissionsPolicy, parsePreferHeader, parsePriorityHeader, parseRetryAfterHeader, parseRobotsMetaTag, parseUserAgent, parseVaryHeader, parseXContentTypeOptionsHeader, parseXRobotsTag, searchHeaders, searchStatusCodes, splitSitemap, statusCodeToText, typeNumberToLabel, validateDomain, validateHeaderName, validateHeaderValue, validateManifest, validateRobotsTxt, validateSitemap } from '../chunk-ACGCCOCK.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, buildHsts, buildLinkHeader, buildMapUrl, buildPermissionsPolicy, buildPreferHeader, buildPriorityHeader, buildRangeHeader, buildReferrerPolicy, buildRetryAfterHeader, buildRobotsMetaTag, buildVaryHeader, buildXContentTypeOptionsHeader, buildXRobotsTag, calculateCookieSizeBudget, checkSetCookieHeader, countryCodeToFlag, extractMultipartBoundary, formatCoordinates, formatTtl, getByCategory, getHeader, getHeadersByCategory, getStatusByCategory, getStatusCode, isClientError, isServerError, isSuccess, isValidIp, isValidIpv4, isValidIpv6, listCloseCodes, listOpcodes, lookupCloseCode, lookupOpcode, parseAcceptLanguage, parseClientHintHeaders, parseContentDisposition, parseContentRangeHeader, parseDnsResponse, parseGeoResponse, parseHar, parseHsts, parseIpv6Address, parseMultipartFormData, parsePermissionsPolicy, parsePreferHeader, parsePriorityHeader, parseRetryAfterHeader, parseRobotsMetaTag, parseUserAgent, parseVaryHeader, parseXContentTypeOptionsHeader, parseXRobotsTag, searchHeaders, searchStatusCodes, splitSitemap, statusCodeToText, typeNumberToLabel, validateDomain, validateHeaderName, validateHeaderValue, validateManifest, validateRobotsTxt, validateSitemap } from '../chunk-CXUOV672.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -2526,6 +2526,68 @@ function validateIsin(input) {
2526
2526
  formatted: `${countryCode} ${securityIdentifier} ${checkDigit}`
2527
2527
  };
2528
2528
  }
2529
+ function calculateMortgagePoints(loanAmount, baseRatePercent, termMonths, pointsCostPercent, rateReductionPercent) {
2530
+ if (!Number.isFinite(pointsCostPercent) || pointsCostPercent < 0) {
2531
+ return { error: "Points cost must be zero or a positive percent of the loan amount" };
2532
+ }
2533
+ if (!Number.isFinite(rateReductionPercent) || rateReductionPercent < 0) {
2534
+ return { error: "Rate reduction must be zero or a positive number" };
2535
+ }
2536
+ if (rateReductionPercent > baseRatePercent) {
2537
+ return { error: "Rate reduction cannot exceed the base interest rate" };
2538
+ }
2539
+ const withoutPoints = calculateLoan(loanAmount, baseRatePercent, termMonths);
2540
+ if ("error" in withoutPoints) return withoutPoints;
2541
+ const withPoints = calculateLoan(loanAmount, baseRatePercent - rateReductionPercent, termMonths);
2542
+ if ("error" in withPoints) return withPoints;
2543
+ const pointsCost = round2(loanAmount * (pointsCostPercent / 100));
2544
+ const monthlySavings = round2(withoutPoints.monthlyPayment - withPoints.monthlyPayment);
2545
+ const breakEvenMonths = monthlySavings > 0 ? Math.ceil(pointsCost / monthlySavings) : null;
2546
+ return {
2547
+ pointsCost,
2548
+ monthlyPaymentWithoutPoints: withoutPoints.monthlyPayment,
2549
+ monthlyPaymentWithPoints: withPoints.monthlyPayment,
2550
+ monthlySavings,
2551
+ breakEvenMonths,
2552
+ totalInterestWithoutPoints: withoutPoints.totalInterest,
2553
+ totalInterestWithPoints: withPoints.totalInterest,
2554
+ totalInterestSavings: round2(withoutPoints.totalInterest - withPoints.totalInterest)
2555
+ };
2556
+ }
2557
+ function calculateLoanPrepaymentPenalty(payoffBalance, penaltyType, params) {
2558
+ if (!Number.isFinite(payoffBalance) || payoffBalance <= 0) {
2559
+ return { error: "Payoff balance must be a positive number" };
2560
+ }
2561
+ if (penaltyType !== "percent-of-balance" && penaltyType !== "months-of-interest") {
2562
+ return { error: 'penaltyType must be "percent-of-balance" or "months-of-interest"' };
2563
+ }
2564
+ let penaltyAmount;
2565
+ if (penaltyType === "percent-of-balance") {
2566
+ const penaltyPercent = params.penaltyPercent;
2567
+ if (!Number.isFinite(penaltyPercent) || penaltyPercent < 0) {
2568
+ return { error: "penaltyPercent must be zero or a positive number" };
2569
+ }
2570
+ penaltyAmount = round2(payoffBalance * (penaltyPercent / 100));
2571
+ } else {
2572
+ const monthsOfInterest = params.monthsOfInterest;
2573
+ const annualRatePercent = params.annualRatePercent;
2574
+ if (!Number.isFinite(monthsOfInterest) || monthsOfInterest < 0) {
2575
+ return { error: "monthsOfInterest must be zero or a positive number" };
2576
+ }
2577
+ if (!Number.isFinite(annualRatePercent) || annualRatePercent < 0) {
2578
+ return { error: "annualRatePercent must be zero or a positive number" };
2579
+ }
2580
+ const monthlyInterest = payoffBalance * (annualRatePercent / 100 / 12);
2581
+ penaltyAmount = round2(monthlyInterest * monthsOfInterest);
2582
+ }
2583
+ return {
2584
+ payoffBalance: round2(payoffBalance),
2585
+ penaltyType,
2586
+ penaltyAmount,
2587
+ effectivePenaltyPercent: round2(penaltyAmount / payoffBalance * 100),
2588
+ totalPayoffCost: round2(payoffBalance + penaltyAmount)
2589
+ };
2590
+ }
2529
2591
 
2530
2592
  exports.BASE_LABELS = BASE_LABELS;
2531
2593
  exports.BASE_PREFIXES = BASE_PREFIXES;
@@ -2561,8 +2623,10 @@ exports.calculateExtraPaymentPayoff = calculateExtraPaymentPayoff;
2561
2623
  exports.calculateFreelancerRate = calculateFreelancerRate;
2562
2624
  exports.calculateGpa = calculateGpa;
2563
2625
  exports.calculateLoan = calculateLoan;
2626
+ exports.calculateLoanPrepaymentPenalty = calculateLoanPrepaymentPenalty;
2564
2627
  exports.calculateLoanRefinance = calculateLoanRefinance;
2565
2628
  exports.calculateMarginMarkup = calculateMarginMarkup;
2629
+ exports.calculateMortgagePoints = calculateMortgagePoints;
2566
2630
  exports.calculateMovingAverages = calculateMovingAverages;
2567
2631
  exports.calculatePaybackPeriod = calculatePaybackPeriod;
2568
2632
  exports.calculatePercentageChange = calculatePercentageChange;
@@ -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 DebtPayoffComparison, O as DebtPayoffInput, P as DebtPayoffPlanResult, Q as DebtPayoffScheduleEntry, R as DebtPayoffStrategy, S as DebtPayoffStrategyResult, T as DebtToIncomeRatioResult, U as DepreciationMethod, V as DepreciationResult, W as DepreciationYear, X as Dimensions, Y as DiscountField, Z as DiscountInput, _ as DiscountResult, $ as DtiTier, a0 as EmiResult, a1 as EmiTenureUnit, a2 as EmiYearlyBreakdownRow, a3 as ExtraPaymentPayoffResult, a4 as FilePermissions, a5 as FormatOptions, a6 as FreelancerRateInput, a7 as FreelancerRateResult, a8 as GPA_GRADE_POINTS, a9 as GpaCourse, aa as GpaCourseResult, ab as GpaResult, ac as IbanValidationResult, ad as IpConversion, ae as IsbnFormat, af as IsbnResult, ag as IsinValidationResult, ah as LoanBalanceInput, ai as LoanBalanceResult, aj as LoanRefinanceResult, ak as LoanResult, al as MarginMarkupField, am as MarginMarkupInput, an as MarginMarkupResult, ao as MovingAveragePoint, ap as MovingAverageResult, aq as NotationStyle, ar as NumberBase, as as PaybackPeriodInput, at as PaybackPeriodResult, au as PercentChangeDirection, av as PercentageChangeResult, aw as Permission, ax as PxConvertResult, ay as RoiInput, az as RoiResult, aA as RuleOf72Direction, aB as RuleOf72Result, aC as SavingsGoalInput, aD as SavingsGoalMode, aE as SavingsGoalResult, aF as SemverVersion, aG as SimpleInterestResult, aH as SubnetInfo, aI as SuccessiveDiscountResult, aJ as SuccessiveDiscountStep, aK as TaxDirection, aL as TaxEquivalentYieldDirection, aM as TaxEquivalentYieldResult, aN as TaxResult, aO as TimeValueDirection, aP as TimeValueResult, aQ as TipSplitResult, aR as USD_DENOMINATIONS, aS as UnitPriceItem, aT as UnitPriceResult, aU as UtilizationTier, aV as VideoBitrateInput, aW as VideoBitrateMode, aX as VideoBitrateResult, aY as ViewportConvertResult, aZ as VinValidationResult, a_ as applySuccessiveDiscounts, a$ as autoFormat, b0 as bumpVersion, b1 as calcAspectRatio, b2 as calcSubnet, b3 as calculateBlendedLoanRate, b4 as calculateBreakEven, b5 as calculateCashBreakdown, b6 as calculateCashRounding, b7 as calculateCdMaturity, b8 as calculateChange, b9 as calculateCompoundInterest, ba as calculateCreditUtilization, bb as calculateDebtToIncomeRatio, bc as calculateDepreciationSchedule, bd as calculateDiscount, be as calculateEmi, bf as calculateExtraPaymentPayoff, bg as calculateFreelancerRate, bh as calculateGpa, bi as calculateLoan, bj as calculateLoanRefinance, bk as calculateMarginMarkup, bl as calculateMovingAverages, bm as calculatePaybackPeriod, bn as calculatePercentageChange, bo as calculateRoi, bp as calculateRuleOf72, bq as calculateSavingsGoal, br as calculateSimpleInterest, bs as calculateTax, bt as calculateTaxEquivalentYield, bu as calculateTimeValue, bv as calculateTipSplit, bw as calculateVideoBitrate, bx as compareSemver, by as compareUnitPrices, bz as convert, bA as convertAprApy, bB as convertBytes, bC as convertIp, bD as coverBox, bE as decimalToIp, bF as decimalToIpCidr, bG as describePermissions, bH as fitIntoBox, bI as formatNumber, bJ as formatValue, bK as formatVwValue, bL as formatWithSeparator, bM as gcd, bN as ipFromBinary, bO as ipFromDecimal, bP as ipFromHex, bQ as ipToBinary, bR as ipToDecimal, bS as ipToDecimalCidr, bT as ipToHex, bU as ipToOctal, bV as isValid, bW as isValidCidr, bX as isValidIp, bY as isValidIpv4, bZ as marginToMarkup, b_ as markupToMargin, b$ as octalToPermissions, c0 as parseFileSize, c1 as parseInput, c2 as parseNumberString, c3 as parseSemver, c4 as permissionsToChmod, c5 as permissionsToOctal, c6 as permissionsToSymbolic, c7 as planDebtPayoff, c8 as ptToPx, c9 as pxToAll, ca as pxToViewport, cb as remToPx, cc as satisfiesRange, cd as scaleByHeight, ce as scaleByWidth, cf as sortVersions, cg as splitSubnet, ch as symbolicToPermissions, ci as validateBarcode, cj as validateCardNumber, ck as validateIban, cl as validateIsbn, cm as validateIsin, cn as validateVin, co as viewportToPx } from '../units-DB0W2pvU.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 DebtPayoffComparison, O as DebtPayoffInput, P as DebtPayoffPlanResult, Q as DebtPayoffScheduleEntry, R as DebtPayoffStrategy, S as DebtPayoffStrategyResult, T as DebtToIncomeRatioResult, U as DepreciationMethod, V as DepreciationResult, W as DepreciationYear, X as Dimensions, Y as DiscountField, Z as DiscountInput, _ as DiscountResult, $ as DtiTier, a0 as EmiResult, a1 as EmiTenureUnit, a2 as EmiYearlyBreakdownRow, a3 as ExtraPaymentPayoffResult, a4 as FilePermissions, a5 as FormatOptions, a6 as FreelancerRateInput, a7 as FreelancerRateResult, a8 as GPA_GRADE_POINTS, a9 as GpaCourse, aa as GpaCourseResult, ab as GpaResult, ac as IbanValidationResult, ad as IpConversion, ae as IsbnFormat, af as IsbnResult, ag as IsinValidationResult, ah as LoanBalanceInput, ai as LoanBalanceResult, aj as LoanPrepaymentPenaltyResult, ak as LoanRefinanceResult, al as LoanResult, am as MarginMarkupField, an as MarginMarkupInput, ao as MarginMarkupResult, ap as MortgagePointsResult, aq as MovingAveragePoint, ar as MovingAverageResult, as as NotationStyle, at as NumberBase, au as PaybackPeriodInput, av as PaybackPeriodResult, aw as PercentChangeDirection, ax as PercentageChangeResult, ay as Permission, az as PrepaymentPenaltyType, aA as PxConvertResult, aB as RoiInput, aC as RoiResult, aD as RuleOf72Direction, aE as RuleOf72Result, aF as SavingsGoalInput, aG as SavingsGoalMode, aH as SavingsGoalResult, aI as SemverVersion, aJ as SimpleInterestResult, aK as SubnetInfo, aL as SuccessiveDiscountResult, aM as SuccessiveDiscountStep, aN as TaxDirection, aO as TaxEquivalentYieldDirection, aP as TaxEquivalentYieldResult, aQ as TaxResult, aR as TimeValueDirection, aS as TimeValueResult, aT as TipSplitResult, aU as USD_DENOMINATIONS, aV as UnitPriceItem, aW as UnitPriceResult, aX as UtilizationTier, aY as VideoBitrateInput, aZ as VideoBitrateMode, a_ as VideoBitrateResult, a$ as ViewportConvertResult, b0 as VinValidationResult, b1 as applySuccessiveDiscounts, b2 as autoFormat, b3 as bumpVersion, b4 as calcAspectRatio, b5 as calcSubnet, b6 as calculateBlendedLoanRate, b7 as calculateBreakEven, b8 as calculateCashBreakdown, b9 as calculateCashRounding, ba as calculateCdMaturity, bb as calculateChange, bc as calculateCompoundInterest, bd as calculateCreditUtilization, be as calculateDebtToIncomeRatio, bf as calculateDepreciationSchedule, bg as calculateDiscount, bh as calculateEmi, bi as calculateExtraPaymentPayoff, bj as calculateFreelancerRate, bk as calculateGpa, bl as calculateLoan, bm as calculateLoanPrepaymentPenalty, bn as calculateLoanRefinance, bo as calculateMarginMarkup, bp as calculateMortgagePoints, bq as calculateMovingAverages, br as calculatePaybackPeriod, bs as calculatePercentageChange, bt as calculateRoi, bu as calculateRuleOf72, bv as calculateSavingsGoal, bw as calculateSimpleInterest, bx as calculateTax, by as calculateTaxEquivalentYield, bz as calculateTimeValue, bA as calculateTipSplit, bB as calculateVideoBitrate, bC as compareSemver, bD as compareUnitPrices, bE as convert, bF as convertAprApy, bG as convertBytes, bH as convertIp, bI as coverBox, bJ as decimalToIp, bK as decimalToIpCidr, bL as describePermissions, bM as fitIntoBox, bN as formatNumber, bO as formatValue, bP as formatVwValue, bQ as formatWithSeparator, bR as gcd, bS as ipFromBinary, bT as ipFromDecimal, bU as ipFromHex, bV as ipToBinary, bW as ipToDecimal, bX as ipToDecimalCidr, bY as ipToHex, bZ as ipToOctal, b_ as isValid, b$ as isValidCidr, c0 as isValidIp, c1 as isValidIpv4, c2 as marginToMarkup, c3 as markupToMargin, c4 as octalToPermissions, c5 as parseFileSize, c6 as parseInput, c7 as parseNumberString, c8 as parseSemver, c9 as permissionsToChmod, ca as permissionsToOctal, cb as permissionsToSymbolic, cc as planDebtPayoff, cd as ptToPx, ce as pxToAll, cf as pxToViewport, cg as remToPx, ch as satisfiesRange, ci as scaleByHeight, cj as scaleByWidth, ck as sortVersions, cl as splitSubnet, cm as symbolicToPermissions, cn as validateBarcode, co as validateCardNumber, cp as validateIban, cq as validateIsbn, cr as validateIsin, cs as validateVin, ct as viewportToPx } from '../units-BAwyBk4x.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 DebtPayoffComparison, O as DebtPayoffInput, P as DebtPayoffPlanResult, Q as DebtPayoffScheduleEntry, R as DebtPayoffStrategy, S as DebtPayoffStrategyResult, T as DebtToIncomeRatioResult, U as DepreciationMethod, V as DepreciationResult, W as DepreciationYear, X as Dimensions, Y as DiscountField, Z as DiscountInput, _ as DiscountResult, $ as DtiTier, a0 as EmiResult, a1 as EmiTenureUnit, a2 as EmiYearlyBreakdownRow, a3 as ExtraPaymentPayoffResult, a4 as FilePermissions, a5 as FormatOptions, a6 as FreelancerRateInput, a7 as FreelancerRateResult, a8 as GPA_GRADE_POINTS, a9 as GpaCourse, aa as GpaCourseResult, ab as GpaResult, ac as IbanValidationResult, ad as IpConversion, ae as IsbnFormat, af as IsbnResult, ag as IsinValidationResult, ah as LoanBalanceInput, ai as LoanBalanceResult, aj as LoanRefinanceResult, ak as LoanResult, al as MarginMarkupField, am as MarginMarkupInput, an as MarginMarkupResult, ao as MovingAveragePoint, ap as MovingAverageResult, aq as NotationStyle, ar as NumberBase, as as PaybackPeriodInput, at as PaybackPeriodResult, au as PercentChangeDirection, av as PercentageChangeResult, aw as Permission, ax as PxConvertResult, ay as RoiInput, az as RoiResult, aA as RuleOf72Direction, aB as RuleOf72Result, aC as SavingsGoalInput, aD as SavingsGoalMode, aE as SavingsGoalResult, aF as SemverVersion, aG as SimpleInterestResult, aH as SubnetInfo, aI as SuccessiveDiscountResult, aJ as SuccessiveDiscountStep, aK as TaxDirection, aL as TaxEquivalentYieldDirection, aM as TaxEquivalentYieldResult, aN as TaxResult, aO as TimeValueDirection, aP as TimeValueResult, aQ as TipSplitResult, aR as USD_DENOMINATIONS, aS as UnitPriceItem, aT as UnitPriceResult, aU as UtilizationTier, aV as VideoBitrateInput, aW as VideoBitrateMode, aX as VideoBitrateResult, aY as ViewportConvertResult, aZ as VinValidationResult, a_ as applySuccessiveDiscounts, a$ as autoFormat, b0 as bumpVersion, b1 as calcAspectRatio, b2 as calcSubnet, b3 as calculateBlendedLoanRate, b4 as calculateBreakEven, b5 as calculateCashBreakdown, b6 as calculateCashRounding, b7 as calculateCdMaturity, b8 as calculateChange, b9 as calculateCompoundInterest, ba as calculateCreditUtilization, bb as calculateDebtToIncomeRatio, bc as calculateDepreciationSchedule, bd as calculateDiscount, be as calculateEmi, bf as calculateExtraPaymentPayoff, bg as calculateFreelancerRate, bh as calculateGpa, bi as calculateLoan, bj as calculateLoanRefinance, bk as calculateMarginMarkup, bl as calculateMovingAverages, bm as calculatePaybackPeriod, bn as calculatePercentageChange, bo as calculateRoi, bp as calculateRuleOf72, bq as calculateSavingsGoal, br as calculateSimpleInterest, bs as calculateTax, bt as calculateTaxEquivalentYield, bu as calculateTimeValue, bv as calculateTipSplit, bw as calculateVideoBitrate, bx as compareSemver, by as compareUnitPrices, bz as convert, bA as convertAprApy, bB as convertBytes, bC as convertIp, bD as coverBox, bE as decimalToIp, bF as decimalToIpCidr, bG as describePermissions, bH as fitIntoBox, bI as formatNumber, bJ as formatValue, bK as formatVwValue, bL as formatWithSeparator, bM as gcd, bN as ipFromBinary, bO as ipFromDecimal, bP as ipFromHex, bQ as ipToBinary, bR as ipToDecimal, bS as ipToDecimalCidr, bT as ipToHex, bU as ipToOctal, bV as isValid, bW as isValidCidr, bX as isValidIp, bY as isValidIpv4, bZ as marginToMarkup, b_ as markupToMargin, b$ as octalToPermissions, c0 as parseFileSize, c1 as parseInput, c2 as parseNumberString, c3 as parseSemver, c4 as permissionsToChmod, c5 as permissionsToOctal, c6 as permissionsToSymbolic, c7 as planDebtPayoff, c8 as ptToPx, c9 as pxToAll, ca as pxToViewport, cb as remToPx, cc as satisfiesRange, cd as scaleByHeight, ce as scaleByWidth, cf as sortVersions, cg as splitSubnet, ch as symbolicToPermissions, ci as validateBarcode, cj as validateCardNumber, ck as validateIban, cl as validateIsbn, cm as validateIsin, cn as validateVin, co as viewportToPx } from '../units-DB0W2pvU.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 DebtPayoffComparison, O as DebtPayoffInput, P as DebtPayoffPlanResult, Q as DebtPayoffScheduleEntry, R as DebtPayoffStrategy, S as DebtPayoffStrategyResult, T as DebtToIncomeRatioResult, U as DepreciationMethod, V as DepreciationResult, W as DepreciationYear, X as Dimensions, Y as DiscountField, Z as DiscountInput, _ as DiscountResult, $ as DtiTier, a0 as EmiResult, a1 as EmiTenureUnit, a2 as EmiYearlyBreakdownRow, a3 as ExtraPaymentPayoffResult, a4 as FilePermissions, a5 as FormatOptions, a6 as FreelancerRateInput, a7 as FreelancerRateResult, a8 as GPA_GRADE_POINTS, a9 as GpaCourse, aa as GpaCourseResult, ab as GpaResult, ac as IbanValidationResult, ad as IpConversion, ae as IsbnFormat, af as IsbnResult, ag as IsinValidationResult, ah as LoanBalanceInput, ai as LoanBalanceResult, aj as LoanPrepaymentPenaltyResult, ak as LoanRefinanceResult, al as LoanResult, am as MarginMarkupField, an as MarginMarkupInput, ao as MarginMarkupResult, ap as MortgagePointsResult, aq as MovingAveragePoint, ar as MovingAverageResult, as as NotationStyle, at as NumberBase, au as PaybackPeriodInput, av as PaybackPeriodResult, aw as PercentChangeDirection, ax as PercentageChangeResult, ay as Permission, az as PrepaymentPenaltyType, aA as PxConvertResult, aB as RoiInput, aC as RoiResult, aD as RuleOf72Direction, aE as RuleOf72Result, aF as SavingsGoalInput, aG as SavingsGoalMode, aH as SavingsGoalResult, aI as SemverVersion, aJ as SimpleInterestResult, aK as SubnetInfo, aL as SuccessiveDiscountResult, aM as SuccessiveDiscountStep, aN as TaxDirection, aO as TaxEquivalentYieldDirection, aP as TaxEquivalentYieldResult, aQ as TaxResult, aR as TimeValueDirection, aS as TimeValueResult, aT as TipSplitResult, aU as USD_DENOMINATIONS, aV as UnitPriceItem, aW as UnitPriceResult, aX as UtilizationTier, aY as VideoBitrateInput, aZ as VideoBitrateMode, a_ as VideoBitrateResult, a$ as ViewportConvertResult, b0 as VinValidationResult, b1 as applySuccessiveDiscounts, b2 as autoFormat, b3 as bumpVersion, b4 as calcAspectRatio, b5 as calcSubnet, b6 as calculateBlendedLoanRate, b7 as calculateBreakEven, b8 as calculateCashBreakdown, b9 as calculateCashRounding, ba as calculateCdMaturity, bb as calculateChange, bc as calculateCompoundInterest, bd as calculateCreditUtilization, be as calculateDebtToIncomeRatio, bf as calculateDepreciationSchedule, bg as calculateDiscount, bh as calculateEmi, bi as calculateExtraPaymentPayoff, bj as calculateFreelancerRate, bk as calculateGpa, bl as calculateLoan, bm as calculateLoanPrepaymentPenalty, bn as calculateLoanRefinance, bo as calculateMarginMarkup, bp as calculateMortgagePoints, bq as calculateMovingAverages, br as calculatePaybackPeriod, bs as calculatePercentageChange, bt as calculateRoi, bu as calculateRuleOf72, bv as calculateSavingsGoal, bw as calculateSimpleInterest, bx as calculateTax, by as calculateTaxEquivalentYield, bz as calculateTimeValue, bA as calculateTipSplit, bB as calculateVideoBitrate, bC as compareSemver, bD as compareUnitPrices, bE as convert, bF as convertAprApy, bG as convertBytes, bH as convertIp, bI as coverBox, bJ as decimalToIp, bK as decimalToIpCidr, bL as describePermissions, bM as fitIntoBox, bN as formatNumber, bO as formatValue, bP as formatVwValue, bQ as formatWithSeparator, bR as gcd, bS as ipFromBinary, bT as ipFromDecimal, bU as ipFromHex, bV as ipToBinary, bW as ipToDecimal, bX as ipToDecimalCidr, bY as ipToHex, bZ as ipToOctal, b_ as isValid, b$ as isValidCidr, c0 as isValidIp, c1 as isValidIpv4, c2 as marginToMarkup, c3 as markupToMargin, c4 as octalToPermissions, c5 as parseFileSize, c6 as parseInput, c7 as parseNumberString, c8 as parseSemver, c9 as permissionsToChmod, ca as permissionsToOctal, cb as permissionsToSymbolic, cc as planDebtPayoff, cd as ptToPx, ce as pxToAll, cf as pxToViewport, cg as remToPx, ch as satisfiesRange, ci as scaleByHeight, cj as scaleByWidth, ck as sortVersions, cl as splitSubnet, cm as symbolicToPermissions, cn as validateBarcode, co as validateCardNumber, cp as validateIban, cq as validateIsbn, cr as validateIsin, cs as validateVin, ct as viewportToPx } from '../units-BAwyBk4x.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, calculateExtraPaymentPayoff, calculateFreelancerRate, calculateGpa, calculateLoan, calculateLoanRefinance, calculateMarginMarkup, calculateMovingAverages, calculatePaybackPeriod, calculatePercentageChange, calculateRoi, calculateRuleOf72, calculateSavingsGoal, calculateSimpleInterest, calculateTax, calculateTaxEquivalentYield, 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, planDebtPayoff, ptToPx, pxToAll, pxToViewport, remToPx, satisfiesRange, scaleByHeight, scaleByWidth, sortVersions, splitSubnet, symbolicToPermissions, validateBarcode, validateCardNumber, validateIban, validateIsbn, validateIsin, validateVin, viewportToPx } from '../chunk-S5FTESKL.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, calculateExtraPaymentPayoff, calculateFreelancerRate, calculateGpa, calculateLoan, calculateLoanPrepaymentPenalty, calculateLoanRefinance, calculateMarginMarkup, calculateMortgagePoints, calculateMovingAverages, calculatePaybackPeriod, calculatePercentageChange, calculateRoi, calculateRuleOf72, calculateSavingsGoal, calculateSimpleInterest, calculateTax, calculateTaxEquivalentYield, 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, planDebtPayoff, ptToPx, pxToAll, pxToViewport, remToPx, satisfiesRange, scaleByHeight, scaleByWidth, sortVersions, splitSubnet, symbolicToPermissions, validateBarcode, validateCardNumber, validateIban, validateIsbn, validateIsin, validateVin, viewportToPx } from '../chunk-AKVWWLNJ.js';
2
2
  import '../chunk-MLKGABMK.js';