@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.
- package/CHANGELOG.md +8 -0
- package/README.md +22 -5
- package/dist/{chunk-S5FTESKL.js → chunk-AKVWWLNJ.js} +65 -1
- package/dist/{chunk-ACGCCOCK.js → chunk-CXUOV672.js} +32 -1
- package/dist/{chunk-DAD2ZOTJ.js → chunk-XT2BQWXT.js} +163 -1
- package/dist/{code-CoeD4Fmq.d.ts → code-46xO9xFf.d.cts} +32 -2
- package/dist/{code-CoeD4Fmq.d.cts → code-46xO9xFf.d.ts} +32 -2
- package/dist/index.cjs +257 -0
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/{network-BmqYmfqY.d.cts → network-Da3meCWM.d.cts} +31 -2
- package/dist/{network-BmqYmfqY.d.ts → network-Da3meCWM.d.ts} +31 -2
- package/dist/tools/code.cjs +162 -0
- package/dist/tools/code.d.cts +1 -1
- package/dist/tools/code.d.ts +1 -1
- package/dist/tools/code.js +1 -1
- package/dist/tools/network.cjs +31 -0
- package/dist/tools/network.d.cts +1 -1
- package/dist/tools/network.d.ts +1 -1
- package/dist/tools/network.js +1 -1
- package/dist/tools/units.cjs +64 -0
- package/dist/tools/units.d.cts +1 -1
- package/dist/tools/units.d.ts +1 -1
- package/dist/tools/units.js +1 -1
- package/dist/{units-DB0W2pvU.d.cts → units-BAwyBk4x.d.cts} +54 -2
- package/dist/{units-DB0W2pvU.d.ts → units-BAwyBk4x.d.ts} +54 -2
- package/package.json +1 -1
package/dist/tools/code.cjs
CHANGED
|
@@ -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;
|
package/dist/tools/code.d.cts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { A as ALL_FLAGS, a as ApiEndpoint, b as ApiInfo, C as CHEATSHEET,
|
|
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';
|
package/dist/tools/code.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { A as ALL_FLAGS, a as ApiEndpoint, b as ApiInfo, C as CHEATSHEET,
|
|
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';
|
package/dist/tools/code.js
CHANGED
|
@@ -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-
|
|
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';
|
package/dist/tools/network.cjs
CHANGED
|
@@ -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;
|
package/dist/tools/network.d.cts
CHANGED
|
@@ -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,
|
|
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';
|
package/dist/tools/network.d.ts
CHANGED
|
@@ -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,
|
|
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';
|
package/dist/tools/network.js
CHANGED
|
@@ -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-
|
|
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';
|
package/dist/tools/units.cjs
CHANGED
|
@@ -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;
|
package/dist/tools/units.d.cts
CHANGED
|
@@ -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
|
|
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';
|
package/dist/tools/units.d.ts
CHANGED
|
@@ -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
|
|
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';
|
package/dist/tools/units.js
CHANGED
|
@@ -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-
|
|
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';
|