@utilix-tech/sdk 0.83.0 → 0.85.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 +2 -2
- package/dist/{chunk-IEPWZERQ.js → chunk-6EJVNQSY.js} +38 -1
- package/dist/{chunk-OFLNVDNX.js → chunk-BCISWFVJ.js} +50 -1
- package/dist/{chunk-QVOK3BXM.js → chunk-FB6CCFR5.js} +77 -1
- package/dist/{chunk-KXUHXQFO.js → chunk-RMXZMYSG.js} +107 -1
- package/dist/{code-COUhffgE.d.cts → code-mkKV7BQ4.d.cts} +33 -2
- package/dist/{code-COUhffgE.d.ts → code-mkKV7BQ4.d.ts} +33 -2
- package/dist/index.cjs +268 -0
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +4 -4
- package/dist/{text-CNn3whZA.d.ts → text-xY5MJwr0.d.cts} +34 -2
- package/dist/{text-CNn3whZA.d.cts → text-xY5MJwr0.d.ts} +34 -2
- package/dist/{time-KqJjdqII.d.cts → time-VMAy_SrV.d.cts} +22 -2
- package/dist/{time-KqJjdqII.d.ts → time-VMAy_SrV.d.ts} +22 -2
- package/dist/tools/code.cjs +106 -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/text.cjs +76 -0
- package/dist/tools/text.d.cts +1 -1
- package/dist/tools/text.d.ts +1 -1
- package/dist/tools/text.js +1 -1
- package/dist/tools/time.cjs +37 -0
- package/dist/tools/time.d.cts +1 -1
- package/dist/tools/time.d.ts +1 -1
- package/dist/tools/time.js +1 -1
- package/dist/tools/units.cjs +49 -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-D7YRRwei.d.cts → units-DwIvTP-X.d.cts} +27 -2
- package/dist/{units-D7YRRwei.d.ts → units-DwIvTP-X.d.ts} +27 -2
- package/package.json +1 -1
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* - date-diff : parseDate, humanizeDiff, diffDates, COMMON_DATE_PRESETS
|
|
7
7
|
* - timezone : TIMEZONES, getTimezoneOffset, convertTime, formatInTimezone, getAllZonesForTime
|
|
8
8
|
* - cron-next : parseCronExpression, getNextRuns, formatRunDate, getRunInterval
|
|
9
|
+
* - cron-overlap-detector : findCronOverlaps
|
|
9
10
|
* - iso8601-duration : parseIso8601Duration, formatIso8601Duration
|
|
10
11
|
*/
|
|
11
12
|
interface TimestampResult {
|
|
@@ -112,6 +113,22 @@ declare function getNextRuns(expr: string, count?: number, fromDate?: Date): Dat
|
|
|
112
113
|
};
|
|
113
114
|
declare function formatRunDate(date: Date, timezone?: string): string;
|
|
114
115
|
declare function getRunInterval(dates: Date[]): string;
|
|
116
|
+
interface CronOverlap {
|
|
117
|
+
date: Date;
|
|
118
|
+
expressionIndexes: number[];
|
|
119
|
+
}
|
|
120
|
+
interface CronOverlapResult {
|
|
121
|
+
overlaps: CronOverlap[];
|
|
122
|
+
windowDays: number;
|
|
123
|
+
truncated: boolean;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Walk minute-by-minute over `windowDays` and flag every minute where two or
|
|
127
|
+
* more of the given 5-field cron expressions fire at once.
|
|
128
|
+
*/
|
|
129
|
+
declare function findCronOverlaps(expressions: string[], windowDays?: number, fromDate?: Date): CronOverlapResult | {
|
|
130
|
+
error: string;
|
|
131
|
+
};
|
|
115
132
|
interface DurationParseResult {
|
|
116
133
|
input: string;
|
|
117
134
|
years: number;
|
|
@@ -158,6 +175,8 @@ declare const time_COMMON_CRONS: typeof COMMON_CRONS;
|
|
|
158
175
|
declare const time_COMMON_DATE_PRESETS: typeof COMMON_DATE_PRESETS;
|
|
159
176
|
type time_CronField = CronField;
|
|
160
177
|
type time_CronNextField = CronNextField;
|
|
178
|
+
type time_CronOverlap = CronOverlap;
|
|
179
|
+
type time_CronOverlapResult = CronOverlapResult;
|
|
161
180
|
type time_CronResult = CronResult;
|
|
162
181
|
type time_DateDiffResult = DateDiffResult;
|
|
163
182
|
type time_DurationFormatResult = DurationFormatResult;
|
|
@@ -168,6 +187,7 @@ type time_TimestampResult = TimestampResult;
|
|
|
168
187
|
type time_TimezoneEntry = TimezoneEntry;
|
|
169
188
|
declare const time_convertTime: typeof convertTime;
|
|
170
189
|
declare const time_diffDates: typeof diffDates;
|
|
190
|
+
declare const time_findCronOverlaps: typeof findCronOverlaps;
|
|
171
191
|
declare const time_formatInTimezone: typeof formatInTimezone;
|
|
172
192
|
declare const time_formatIso8601Duration: typeof formatIso8601Duration;
|
|
173
193
|
declare const time_formatRelative: typeof formatRelative;
|
|
@@ -185,7 +205,7 @@ declare const time_parseCronExpression: typeof parseCronExpression;
|
|
|
185
205
|
declare const time_parseDate: typeof parseDate;
|
|
186
206
|
declare const time_parseIso8601Duration: typeof parseIso8601Duration;
|
|
187
207
|
declare namespace time {
|
|
188
|
-
export { time_COMMON_CRONS as COMMON_CRONS, time_COMMON_DATE_PRESETS as COMMON_DATE_PRESETS, type time_CronField as CronField, type time_CronNextField as CronNextField, type time_CronResult as CronResult, type time_DateDiffResult as DateDiffResult, type time_DurationFormatResult as DurationFormatResult, type time_DurationParseResult as DurationParseResult, type time_ParsedCron as ParsedCron, time_TIMEZONES as TIMEZONES, type time_TimestampResult as TimestampResult, type time_TimezoneEntry as TimezoneEntry, time_convertTime as convertTime, time_diffDates as diffDates, time_formatInTimezone as formatInTimezone, time_formatIso8601Duration as formatIso8601Duration, time_formatRelative as formatRelative, time_formatRunDate as formatRunDate, time_fromIsoString as fromIsoString, time_fromUnix as fromUnix, time_getAllZonesForTime as getAllZonesForTime, time_getNextRuns as getNextRuns, time_getNow as getNow, time_getRunInterval as getRunInterval, time_getTimezoneOffset as getTimezoneOffset, time_humanizeDiff as humanizeDiff, time_parseCron as parseCron, time_parseCronExpression as parseCronExpression, time_parseDate as parseDate, time_parseIso8601Duration as parseIso8601Duration };
|
|
208
|
+
export { time_COMMON_CRONS as COMMON_CRONS, time_COMMON_DATE_PRESETS as COMMON_DATE_PRESETS, type time_CronField as CronField, type time_CronNextField as CronNextField, type time_CronOverlap as CronOverlap, type time_CronOverlapResult as CronOverlapResult, type time_CronResult as CronResult, type time_DateDiffResult as DateDiffResult, type time_DurationFormatResult as DurationFormatResult, type time_DurationParseResult as DurationParseResult, type time_ParsedCron as ParsedCron, time_TIMEZONES as TIMEZONES, type time_TimestampResult as TimestampResult, type time_TimezoneEntry as TimezoneEntry, time_convertTime as convertTime, time_diffDates as diffDates, time_findCronOverlaps as findCronOverlaps, time_formatInTimezone as formatInTimezone, time_formatIso8601Duration as formatIso8601Duration, time_formatRelative as formatRelative, time_formatRunDate as formatRunDate, time_fromIsoString as fromIsoString, time_fromUnix as fromUnix, time_getAllZonesForTime as getAllZonesForTime, time_getNextRuns as getNextRuns, time_getNow as getNow, time_getRunInterval as getRunInterval, time_getTimezoneOffset as getTimezoneOffset, time_humanizeDiff as humanizeDiff, time_parseCron as parseCron, time_parseCronExpression as parseCronExpression, time_parseDate as parseDate, time_parseIso8601Duration as parseIso8601Duration };
|
|
189
209
|
}
|
|
190
210
|
|
|
191
|
-
export {
|
|
211
|
+
export { parseCron as A, parseCronExpression as B, COMMON_CRONS as C, type DateDiffResult as D, parseDate as E, parseIso8601Duration as F, type ParsedCron as P, TIMEZONES as T, COMMON_DATE_PRESETS as a, type CronField as b, type CronNextField as c, type CronOverlap as d, type CronOverlapResult as e, type CronResult as f, type DurationFormatResult as g, type DurationParseResult as h, type TimestampResult as i, type TimezoneEntry as j, convertTime as k, diffDates as l, findCronOverlaps as m, formatInTimezone as n, formatIso8601Duration as o, formatRelative as p, formatRunDate as q, fromIsoString as r, fromUnix as s, time as t, getAllZonesForTime as u, getNextRuns as v, getNow as w, getRunInterval as x, getTimezoneOffset as y, humanizeDiff as z };
|
package/dist/tools/code.cjs
CHANGED
|
@@ -1801,6 +1801,111 @@ function normalizeRef(ref) {
|
|
|
1801
1801
|
const tagPart = parsed.digest ? `@${parsed.digest}` : parsed.tag ? `:${parsed.tag}` : "";
|
|
1802
1802
|
return `${parsed.registry}/${ns}${parsed.repository}${tagPart}`;
|
|
1803
1803
|
}
|
|
1804
|
+
function _parseDockerfileInstructions(content) {
|
|
1805
|
+
const rawLines = content.replace(/\r\n/g, "\n").split("\n");
|
|
1806
|
+
const instructions = [];
|
|
1807
|
+
let buffer = "";
|
|
1808
|
+
let bufferStartLine = 0;
|
|
1809
|
+
for (let i = 0; i < rawLines.length; i++) {
|
|
1810
|
+
const lineNo = i + 1;
|
|
1811
|
+
const line = rawLines[i];
|
|
1812
|
+
const trimmed = line.trim();
|
|
1813
|
+
if (buffer === "") {
|
|
1814
|
+
if (trimmed === "" || trimmed.startsWith("#")) continue;
|
|
1815
|
+
bufferStartLine = lineNo;
|
|
1816
|
+
buffer = line.trimEnd();
|
|
1817
|
+
} else {
|
|
1818
|
+
buffer += "\n" + line.trimEnd();
|
|
1819
|
+
}
|
|
1820
|
+
if (buffer.endsWith("\\")) {
|
|
1821
|
+
buffer = buffer.slice(0, -1);
|
|
1822
|
+
continue;
|
|
1823
|
+
}
|
|
1824
|
+
const match = buffer.trim().match(/^([A-Za-z]+)\s*([\s\S]*)$/);
|
|
1825
|
+
if (match) {
|
|
1826
|
+
instructions.push({ instruction: match[1].toUpperCase(), args: match[2].trim(), line: bufferStartLine });
|
|
1827
|
+
}
|
|
1828
|
+
buffer = "";
|
|
1829
|
+
}
|
|
1830
|
+
return instructions;
|
|
1831
|
+
}
|
|
1832
|
+
var _DOCKERFILE_TAR_RE = /\.(tar(\.(gz|bz2|xz))?|tgz|tbz2|txz)$/i;
|
|
1833
|
+
function lintDockerfile(content) {
|
|
1834
|
+
if (!content || !content.trim()) return { error: "Dockerfile content is required" };
|
|
1835
|
+
const instructions = _parseDockerfileInstructions(content);
|
|
1836
|
+
if (instructions.length === 0) return { error: "No Dockerfile instructions found" };
|
|
1837
|
+
const fromInstructions = instructions.filter((i) => i.instruction === "FROM");
|
|
1838
|
+
if (fromInstructions.length === 0) return { error: "No FROM instruction found; this does not look like a valid Dockerfile" };
|
|
1839
|
+
const stageNames = /* @__PURE__ */ new Set();
|
|
1840
|
+
const stages = fromInstructions.map((inst, idx) => {
|
|
1841
|
+
const asMatch = inst.args.match(/^(\S+)(?:\s+AS\s+(\S+))?/i);
|
|
1842
|
+
const baseImage = asMatch ? asMatch[1] : inst.args.split(/\s+/)[0];
|
|
1843
|
+
const name = asMatch && asMatch[2] ? asMatch[2] : null;
|
|
1844
|
+
if (name) stageNames.add(name.toLowerCase());
|
|
1845
|
+
return { index: idx, name, baseImage, fromLine: inst.line };
|
|
1846
|
+
});
|
|
1847
|
+
const findings = [];
|
|
1848
|
+
for (const stage of stages) {
|
|
1849
|
+
const base = stage.baseImage;
|
|
1850
|
+
if (base.toLowerCase() === "scratch") continue;
|
|
1851
|
+
if (stageNames.has(base.toLowerCase())) continue;
|
|
1852
|
+
const withoutDigest = base.split("@")[0];
|
|
1853
|
+
const hasTag = withoutDigest.includes(":");
|
|
1854
|
+
const tag = hasTag ? withoutDigest.split(":").pop() : null;
|
|
1855
|
+
if (!hasTag) {
|
|
1856
|
+
findings.push({
|
|
1857
|
+
rule: "unpinned-base-image",
|
|
1858
|
+
severity: "warning",
|
|
1859
|
+
line: stage.fromLine,
|
|
1860
|
+
message: `FROM ${base} has no tag, so it resolves to ":latest", which can silently change what gets built on a future run. Pin an explicit version tag instead.`
|
|
1861
|
+
});
|
|
1862
|
+
} else if (tag === "latest") {
|
|
1863
|
+
findings.push({
|
|
1864
|
+
rule: "unpinned-base-image",
|
|
1865
|
+
severity: "warning",
|
|
1866
|
+
line: stage.fromLine,
|
|
1867
|
+
message: `FROM ${base} is explicitly pinned to the "latest" tag, which is a moving target rather than a fixed version. Pin an explicit version tag instead.`
|
|
1868
|
+
});
|
|
1869
|
+
}
|
|
1870
|
+
}
|
|
1871
|
+
const finalStage = stages[stages.length - 1];
|
|
1872
|
+
const finalStageInstructions = instructions.filter((i) => i.line >= finalStage.fromLine);
|
|
1873
|
+
if (!finalStageInstructions.some((i) => i.instruction === "WORKDIR")) {
|
|
1874
|
+
findings.push({
|
|
1875
|
+
rule: "missing-workdir",
|
|
1876
|
+
severity: "warning",
|
|
1877
|
+
line: finalStage.fromLine,
|
|
1878
|
+
message: 'No WORKDIR instruction in the final stage, so RUN/CMD/ENTRYPOINT execute from "/" by default. Set an explicit WORKDIR.'
|
|
1879
|
+
});
|
|
1880
|
+
}
|
|
1881
|
+
if (!finalStageInstructions.some((i) => i.instruction === "USER")) {
|
|
1882
|
+
findings.push({
|
|
1883
|
+
rule: "running-as-root",
|
|
1884
|
+
severity: "warning",
|
|
1885
|
+
line: finalStage.fromLine,
|
|
1886
|
+
message: "No USER instruction in the final stage, so the container runs as root by default. Add a non-root USER unless root is genuinely required."
|
|
1887
|
+
});
|
|
1888
|
+
}
|
|
1889
|
+
for (const inst of instructions) {
|
|
1890
|
+
if (inst.instruction !== "ADD") continue;
|
|
1891
|
+
const parts = inst.args.split(/\s+/).filter(Boolean).filter((p) => !p.startsWith("--"));
|
|
1892
|
+
if (parts.length < 2) continue;
|
|
1893
|
+
const sources = parts.slice(0, -1);
|
|
1894
|
+
for (const src of sources) {
|
|
1895
|
+
const isUrl = /^https?:\/\//i.test(src);
|
|
1896
|
+
const isTar = _DOCKERFILE_TAR_RE.test(src);
|
|
1897
|
+
if (!isUrl && !isTar) {
|
|
1898
|
+
findings.push({
|
|
1899
|
+
rule: "add-vs-copy",
|
|
1900
|
+
severity: "info",
|
|
1901
|
+
line: inst.line,
|
|
1902
|
+
message: `ADD ${src} copies a local file/directory, not a URL or an auto-extracting archive. Use COPY instead, since ADD's extra behavior (remote fetch, tar auto-extract) doesn't apply here.`
|
|
1903
|
+
});
|
|
1904
|
+
}
|
|
1905
|
+
}
|
|
1906
|
+
}
|
|
1907
|
+
return { findings, stages };
|
|
1908
|
+
}
|
|
1804
1909
|
function removeJsComments(code) {
|
|
1805
1910
|
let result = "";
|
|
1806
1911
|
let i = 0;
|
|
@@ -4295,6 +4400,7 @@ exports.getJsStats = getJsStats;
|
|
|
4295
4400
|
exports.getMethodColor = getMethodColor;
|
|
4296
4401
|
exports.isValidTag = isValidTag;
|
|
4297
4402
|
exports.lintConventionalCommit = lintConventionalCommit;
|
|
4403
|
+
exports.lintDockerfile = lintDockerfile;
|
|
4298
4404
|
exports.lookupMime = lookupMime;
|
|
4299
4405
|
exports.minifyCss = minifyCss;
|
|
4300
4406
|
exports.minifyGql = minifyGql;
|
package/dist/tools/code.d.cts
CHANGED
|
@@ -1 +1 @@
|
|
|
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 ConnectionStringHost, j as ConnectionStringResult, k as ConventionalCommitFinding, l as ConventionalCommitFooter, m as ConventionalCommitOptions, n as ConventionalCommitParsed, o as ConventionalCommitResult, p as ConventionalCommitSeverity, q as CssResult, D as DEFAULT_COMMIT_TYPES, r as DependencyAuditDuplicate, s as DependencyAuditEntry, t as DependencyAuditIssue, u as DependencyAuditResult, v as DependencyRangeType, w as DependencySection, x as DockerImageRef, E as EditorConfigIssue,
|
|
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 ConnectionStringHost, j as ConnectionStringResult, k as ConventionalCommitFinding, l as ConventionalCommitFooter, m as ConventionalCommitOptions, n as ConventionalCommitParsed, o as ConventionalCommitResult, p as ConventionalCommitSeverity, q as CssResult, D as DEFAULT_COMMIT_TYPES, r as DependencyAuditDuplicate, s as DependencyAuditEntry, t as DependencyAuditIssue, u as DependencyAuditResult, v as DependencyRangeType, w as DependencySection, x as DockerImageRef, y as DockerfileLintFinding, z as DockerfileLintResult, B as DockerfileStage, E as EditorConfigIssue, F as EditorConfigProperty, G as EditorConfigSection, H as EditorConfigValidationResult, I as EnvEntry, J as EnvParseResult, K as ExportsIssue, L as ExportsShape, M as ExportsValidationResult, N as FenceTagIssue, O as FenceTagIssueType, P as FenceValidationResult, Q as GitCommandConfig, R as GitCommandResult, S as GitOperation, T as GithubUrlInfo, U as GithubUrlType, V as GitignoreTestResult, W as GqlFormatResult, X as HtmlFormatResult, Y as HtmlMinifyOptions, Z as HtmlMinifyResult, _ as JsMinifyOptions, $ as JsMinifyResult, a0 as KNOWN_LANGUAGE_TAGS, a1 as LinkReferenceDefinition, a2 as LinkReferenceUsage, a3 as MIME_TABLE, a4 as MarkdownFootnoteDefinition, a5 as MarkdownFootnoteReference, a6 as MarkdownFootnoteResult, a7 as MarkdownLinkReferenceResult, a8 as MatchResult, a9 as MimeEntry, aa as MimeLookupResult, ab as OPERATIONS, ac as ParsedSpec, ad as PlaceholderStyle, ae as RedosFinding, af as RedosResult, ag as RedosSeverity, ah as RegexBackreferenceInfo, ai as RegexError, aj as RegexFlag, ak as RegexGroupAnalysis, al as RegexGroupInfo, am as RegexGroupIssue, an as RegexMatch, ao as RegexResult, ap as RegexSuccess, aq as ResolvedLinkReference, ar as SQL_DEFAULT_OPTIONS, as as Segment, at as SpecVersion, au as SqlDialect, av as SqlFormatOptions, aw as SqlPlaceholder, ax as SqlPlaceholderResult, ay as SvgSpriteResult, az as SvgSpriteSymbol, aA as TestPatternResult, aB as TsconfigIssue, aC as TsconfigValidationResult, aD as analyzeRegexGroups, aE as auditDependencyRanges, aF as buildDockerPull, aG as buildDockerRun, aH as buildGitCommand, aI as collapseHtmlWhitespace, aJ as collapseJsWhitespace, aK as countProperties, aL as countRules, aM as countSqlPlaceholders, aN as detectDialect, aO as detectOperationType, aP as detectRedos, aQ as envToExport, aR as envToJson, aS as extractMarkdownFootnotes, aT as extractMarkdownLinkReferences, aU as extractSvgSpriteSymbols, aV as formatCss, aW as formatGql, aX as formatHtml, aY as formatSql, aZ as getEndpointsByTag, a_ as getHtmlStats, a$ as getJsStats, b0 as getMethodColor, b1 as isValidTag, b2 as lintConventionalCommit, b3 as lintDockerfile, b4 as lookupMime, b5 as minifyCss, b6 as minifyGql, b7 as minifyHtml, b8 as minifyJs, b9 as minifySql, ba as normalizeRef, bb as parseCommitTrailers, bc as parseConnectionString, bd as parseDockerImage, be as parseEnv, bf as parseGitCommand, bg as parseGithubUrl, bh as parseSpec, bi as removeConsoleCalls, bj as removeEmptyAttributes, bk as removeHtmlComments, bl as removeJsComments, bm as removeRedundantAttributes, bn as searchCheatsheet, bo as searchEndpoints, bp as splitStatements, bq as testGitignorePatterns, br as testPattern, bs as testRegex, bt as validateAria, bu as validateEditorConfig, bv as validateEnvKey, bw as validateFenceLanguageTags, bx as validatePackageExports, by as validateTsconfig } from '../code-mkKV7BQ4.cjs';
|
package/dist/tools/code.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
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 ConnectionStringHost, j as ConnectionStringResult, k as ConventionalCommitFinding, l as ConventionalCommitFooter, m as ConventionalCommitOptions, n as ConventionalCommitParsed, o as ConventionalCommitResult, p as ConventionalCommitSeverity, q as CssResult, D as DEFAULT_COMMIT_TYPES, r as DependencyAuditDuplicate, s as DependencyAuditEntry, t as DependencyAuditIssue, u as DependencyAuditResult, v as DependencyRangeType, w as DependencySection, x as DockerImageRef, E as EditorConfigIssue,
|
|
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 ConnectionStringHost, j as ConnectionStringResult, k as ConventionalCommitFinding, l as ConventionalCommitFooter, m as ConventionalCommitOptions, n as ConventionalCommitParsed, o as ConventionalCommitResult, p as ConventionalCommitSeverity, q as CssResult, D as DEFAULT_COMMIT_TYPES, r as DependencyAuditDuplicate, s as DependencyAuditEntry, t as DependencyAuditIssue, u as DependencyAuditResult, v as DependencyRangeType, w as DependencySection, x as DockerImageRef, y as DockerfileLintFinding, z as DockerfileLintResult, B as DockerfileStage, E as EditorConfigIssue, F as EditorConfigProperty, G as EditorConfigSection, H as EditorConfigValidationResult, I as EnvEntry, J as EnvParseResult, K as ExportsIssue, L as ExportsShape, M as ExportsValidationResult, N as FenceTagIssue, O as FenceTagIssueType, P as FenceValidationResult, Q as GitCommandConfig, R as GitCommandResult, S as GitOperation, T as GithubUrlInfo, U as GithubUrlType, V as GitignoreTestResult, W as GqlFormatResult, X as HtmlFormatResult, Y as HtmlMinifyOptions, Z as HtmlMinifyResult, _ as JsMinifyOptions, $ as JsMinifyResult, a0 as KNOWN_LANGUAGE_TAGS, a1 as LinkReferenceDefinition, a2 as LinkReferenceUsage, a3 as MIME_TABLE, a4 as MarkdownFootnoteDefinition, a5 as MarkdownFootnoteReference, a6 as MarkdownFootnoteResult, a7 as MarkdownLinkReferenceResult, a8 as MatchResult, a9 as MimeEntry, aa as MimeLookupResult, ab as OPERATIONS, ac as ParsedSpec, ad as PlaceholderStyle, ae as RedosFinding, af as RedosResult, ag as RedosSeverity, ah as RegexBackreferenceInfo, ai as RegexError, aj as RegexFlag, ak as RegexGroupAnalysis, al as RegexGroupInfo, am as RegexGroupIssue, an as RegexMatch, ao as RegexResult, ap as RegexSuccess, aq as ResolvedLinkReference, ar as SQL_DEFAULT_OPTIONS, as as Segment, at as SpecVersion, au as SqlDialect, av as SqlFormatOptions, aw as SqlPlaceholder, ax as SqlPlaceholderResult, ay as SvgSpriteResult, az as SvgSpriteSymbol, aA as TestPatternResult, aB as TsconfigIssue, aC as TsconfigValidationResult, aD as analyzeRegexGroups, aE as auditDependencyRanges, aF as buildDockerPull, aG as buildDockerRun, aH as buildGitCommand, aI as collapseHtmlWhitespace, aJ as collapseJsWhitespace, aK as countProperties, aL as countRules, aM as countSqlPlaceholders, aN as detectDialect, aO as detectOperationType, aP as detectRedos, aQ as envToExport, aR as envToJson, aS as extractMarkdownFootnotes, aT as extractMarkdownLinkReferences, aU as extractSvgSpriteSymbols, aV as formatCss, aW as formatGql, aX as formatHtml, aY as formatSql, aZ as getEndpointsByTag, a_ as getHtmlStats, a$ as getJsStats, b0 as getMethodColor, b1 as isValidTag, b2 as lintConventionalCommit, b3 as lintDockerfile, b4 as lookupMime, b5 as minifyCss, b6 as minifyGql, b7 as minifyHtml, b8 as minifyJs, b9 as minifySql, ba as normalizeRef, bb as parseCommitTrailers, bc as parseConnectionString, bd as parseDockerImage, be as parseEnv, bf as parseGitCommand, bg as parseGithubUrl, bh as parseSpec, bi as removeConsoleCalls, bj as removeEmptyAttributes, bk as removeHtmlComments, bl as removeJsComments, bm as removeRedundantAttributes, bn as searchCheatsheet, bo as searchEndpoints, bp as splitStatements, bq as testGitignorePatterns, br as testPattern, bs as testRegex, bt as validateAria, bu as validateEditorConfig, bv as validateEnvKey, bw as validateFenceLanguageTags, bx as validatePackageExports, by as validateTsconfig } from '../code-mkKV7BQ4.js';
|
package/dist/tools/code.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { ALL_FLAGS, CHEATSHEET, DEFAULT_COMMIT_TYPES, KNOWN_LANGUAGE_TAGS, MIME_TABLE, OPERATIONS, SQL_DEFAULT_OPTIONS, analyzeRegexGroups, auditDependencyRanges, buildDockerPull, buildDockerRun, buildGitCommand, collapseHtmlWhitespace, collapseJsWhitespace, countProperties, countRules, countSqlPlaceholders, detectDialect, detectOperationType, detectRedos, envToExport, envToJson, extractMarkdownFootnotes, extractMarkdownLinkReferences, extractSvgSpriteSymbols, formatCss, formatGql, formatHtml, formatSql, getEndpointsByTag, getHtmlStats, getJsStats, getMethodColor, isValidTag, lintConventionalCommit, lookupMime, minifyCss, minifyGql, minifyHtml, minifyJs, minifySql, normalizeRef, parseCommitTrailers, parseConnectionString, parseDockerImage, parseEnv, parseGitCommand, parseGithubUrl, parseSpec, removeConsoleCalls, removeEmptyAttributes, removeHtmlComments, removeJsComments, removeRedundantAttributes, searchCheatsheet, searchEndpoints, splitStatements, testGitignorePatterns, testPattern, testRegex, validateAria, validateEditorConfig, validateEnvKey, validateFenceLanguageTags, validatePackageExports, validateTsconfig } from '../chunk-
|
|
1
|
+
export { ALL_FLAGS, CHEATSHEET, DEFAULT_COMMIT_TYPES, KNOWN_LANGUAGE_TAGS, MIME_TABLE, OPERATIONS, SQL_DEFAULT_OPTIONS, analyzeRegexGroups, auditDependencyRanges, buildDockerPull, buildDockerRun, buildGitCommand, collapseHtmlWhitespace, collapseJsWhitespace, countProperties, countRules, countSqlPlaceholders, detectDialect, detectOperationType, detectRedos, envToExport, envToJson, extractMarkdownFootnotes, extractMarkdownLinkReferences, extractSvgSpriteSymbols, formatCss, formatGql, formatHtml, formatSql, getEndpointsByTag, getHtmlStats, getJsStats, getMethodColor, isValidTag, lintConventionalCommit, lintDockerfile, lookupMime, minifyCss, minifyGql, minifyHtml, minifyJs, minifySql, normalizeRef, parseCommitTrailers, parseConnectionString, parseDockerImage, parseEnv, parseGitCommand, parseGithubUrl, parseSpec, removeConsoleCalls, removeEmptyAttributes, removeHtmlComments, removeJsComments, removeRedundantAttributes, searchCheatsheet, searchEndpoints, splitStatements, testGitignorePatterns, testPattern, testRegex, validateAria, validateEditorConfig, validateEnvKey, validateFenceLanguageTags, validatePackageExports, validateTsconfig } from '../chunk-RMXZMYSG.js';
|
|
2
2
|
import '../chunk-MLKGABMK.js';
|
package/dist/tools/text.cjs
CHANGED
|
@@ -3121,6 +3121,81 @@ function checkOxfordCommaConsistency(text) {
|
|
|
3121
3121
|
const consistent = withOxfordComma === 0 || withoutOxfordComma === 0;
|
|
3122
3122
|
return { totalLists: instances.length, withOxfordComma, withoutOxfordComma, consistent, instances };
|
|
3123
3123
|
}
|
|
3124
|
+
function dashContextSnippet(text, index, matchLen) {
|
|
3125
|
+
const start = Math.max(0, index - 20);
|
|
3126
|
+
const end = Math.min(text.length, index + matchLen + 20);
|
|
3127
|
+
const body = text.slice(start, end).replace(/\s+/g, " ").trim();
|
|
3128
|
+
return (start > 0 ? "\u2026" : "") + body + (end < text.length ? "\u2026" : "");
|
|
3129
|
+
}
|
|
3130
|
+
function checkDashUsage(text) {
|
|
3131
|
+
const issues = [];
|
|
3132
|
+
const enDashCount = (text.match(/–/g) ?? []).length;
|
|
3133
|
+
const hyphenCount = (text.match(/-/g) ?? []).length;
|
|
3134
|
+
const doubleHyphenMatches = [...text.matchAll(/-{2,}/g)];
|
|
3135
|
+
for (const m of doubleHyphenMatches) {
|
|
3136
|
+
const index = m.index ?? 0;
|
|
3137
|
+
issues.push({
|
|
3138
|
+
type: "double-hyphen",
|
|
3139
|
+
index,
|
|
3140
|
+
context: dashContextSnippet(text, index, m[0].length),
|
|
3141
|
+
message: `Found ${m[0].length} consecutive hyphens ("${m[0]}"); likely meant to be an em dash (\u2014) or en dash (\u2013).`
|
|
3142
|
+
});
|
|
3143
|
+
}
|
|
3144
|
+
const spacedHyphenMatches = [...text.matchAll(/(?<=\S) - (?=\S)/g)];
|
|
3145
|
+
for (const m of spacedHyphenMatches) {
|
|
3146
|
+
const index = m.index ?? 0;
|
|
3147
|
+
issues.push({
|
|
3148
|
+
type: "spaced-hyphen",
|
|
3149
|
+
index,
|
|
3150
|
+
context: dashContextSnippet(text, index, m[0].length),
|
|
3151
|
+
message: "A hyphen surrounded by spaces usually signals an intended em dash (\u2014), not a hyphenated compound word."
|
|
3152
|
+
});
|
|
3153
|
+
}
|
|
3154
|
+
const emDashOccurrences = [...text.matchAll(/—/g)];
|
|
3155
|
+
let spacedEm = 0;
|
|
3156
|
+
let unspacedEm = 0;
|
|
3157
|
+
for (const m of emDashOccurrences) {
|
|
3158
|
+
const idx = m.index ?? 0;
|
|
3159
|
+
const before = text[idx - 1];
|
|
3160
|
+
const after = text[idx + 1];
|
|
3161
|
+
if (before === " " && after === " ") spacedEm++;
|
|
3162
|
+
else if (before !== " " && after !== " ") unspacedEm++;
|
|
3163
|
+
}
|
|
3164
|
+
let dominantEmDashStyle = "none";
|
|
3165
|
+
let emDashSpacingConsistent = true;
|
|
3166
|
+
if (emDashOccurrences.length > 0) {
|
|
3167
|
+
dominantEmDashStyle = spacedEm >= unspacedEm ? "spaced" : "unspaced";
|
|
3168
|
+
emDashSpacingConsistent = spacedEm === 0 || unspacedEm === 0;
|
|
3169
|
+
if (!emDashSpacingConsistent) {
|
|
3170
|
+
for (const m of emDashOccurrences) {
|
|
3171
|
+
const idx = m.index ?? 0;
|
|
3172
|
+
const before = text[idx - 1];
|
|
3173
|
+
const after = text[idx + 1];
|
|
3174
|
+
const isSpaced = before === " " && after === " ";
|
|
3175
|
+
const matchesDominant = dominantEmDashStyle === "spaced" ? isSpaced : !isSpaced;
|
|
3176
|
+
if (!matchesDominant) {
|
|
3177
|
+
issues.push({
|
|
3178
|
+
type: "inconsistent-em-dash-spacing",
|
|
3179
|
+
index: idx,
|
|
3180
|
+
context: dashContextSnippet(text, idx, 1),
|
|
3181
|
+
message: `This em dash is ${isSpaced ? "spaced" : "unspaced"}, but the document mostly uses ${dominantEmDashStyle} em dashes.`
|
|
3182
|
+
});
|
|
3183
|
+
}
|
|
3184
|
+
}
|
|
3185
|
+
}
|
|
3186
|
+
}
|
|
3187
|
+
issues.sort((a, b) => a.index - b.index);
|
|
3188
|
+
return {
|
|
3189
|
+
emDashCount: emDashOccurrences.length,
|
|
3190
|
+
enDashCount,
|
|
3191
|
+
hyphenCount,
|
|
3192
|
+
doubleHyphenCount: doubleHyphenMatches.length,
|
|
3193
|
+
spacedHyphenCount: spacedHyphenMatches.length,
|
|
3194
|
+
emDashSpacingConsistent,
|
|
3195
|
+
dominantEmDashStyle,
|
|
3196
|
+
issues
|
|
3197
|
+
};
|
|
3198
|
+
}
|
|
3124
3199
|
|
|
3125
3200
|
exports.CASE_FORMATS = CASE_FORMATS;
|
|
3126
3201
|
exports.DEFAULT_CONVERT_OPTIONS = DEFAULT_CONVERT_OPTIONS;
|
|
@@ -3136,6 +3211,7 @@ exports.applyOp = applyOp;
|
|
|
3136
3211
|
exports.applyOps = applyOps;
|
|
3137
3212
|
exports.calculateStringDistance = calculateStringDistance;
|
|
3138
3213
|
exports.centerText = centerText;
|
|
3214
|
+
exports.checkDashUsage = checkDashUsage;
|
|
3139
3215
|
exports.checkOxfordCommaConsistency = checkOxfordCommaConsistency;
|
|
3140
3216
|
exports.convertAll = convertAll;
|
|
3141
3217
|
exports.convertCase = convertCase;
|
package/dist/tools/text.d.cts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { A as AsciiFont, a as AsciiOptions, C as CASE_FORMATS, b as CaseFormat, c as ConvertOptions, D as DEFAULT_CONVERT_OPTIONS, d as
|
|
1
|
+
export { A as AsciiFont, a as AsciiOptions, C as CASE_FORMATS, b as CaseFormat, c as ConvertOptions, D as DEFAULT_CONVERT_OPTIONS, d as DashIssue, e as DashIssueType, f as DashUsageResult, g as DiffFile, h as DiffHunk, i as DiffLine, j as DiffResult, k as DiffType, l as DiffViewerLine, E as EMOJI_TABLE, m as ESCAPE_MODES, n as EmojiEntry, o as EscapeMode, F as FillerCategory, p as FillerMatch, q as FillerWordResult, K as KeywordDensityEntry, r as KeywordDensityOptions, s as KeywordDensityResult, L as LINE_OPS, u as LineOp, v as LineType, w as LoremUnit, M as MORSE_CODE, x as MarkdownResult, y as MorseOptions, O as OxfordCommaInstance, z as OxfordCommaResult, P as ParsedDiff, B as ParsedTable, G as PassiveVoiceMatch, H as PassiveVoiceResult, I as PassiveVoiceSentence, R as ReadabilityResult, J as ReadabilityScore, S as SentenceLengthBucket, N as SentenceLengthDistribution, Q as SlugSeparator, T as StringDistanceMode, U as StringDistanceResult, V as TableOptions, W as TextAnalysis, X as WordCountResult, Y as WordyPhraseMatch, Z as WordyPhraseResult, _ as addBorder, $ as analyzeKeywordDensity, a0 as analyzeSentenceLengths, a1 as analyzeText, a2 as applyOp, a3 as applyOps, a4 as calculateStringDistance, a5 as centerText, a6 as checkDashUsage, a7 as checkOxfordCommaConsistency, a8 as convertAll, a9 as convertCase, aa as countWords, ab as csvToHtml, ac as csvToMarkdown, ad as detectDelimiter, ae as detectFillerWords, af as detectPassiveVoice, ag as detectWordyPhrases, ah as diffLines, ai as diffLinesSimple, aj as diffStats, ak as escapeAll, al as escapeString, am as extractHeadings, an as formatReadingTime, ao as generate, ap as generateDiff, aq as generateHtmlTable, ar as generateMarkdownTable, as as generateParagraphs, at as generateSentences, au as generateWords, av as getAvailableFonts, aw as getEmojiByCategory, ax as getEmojiByChar, ay as getEmojiByShortcode, az as getEmojiCategories, aA as getMorseForChar, aB as getMorseTiming, aC as htmlToMarkdown, aD as isValidMorse, aE as markdownToHtml, aF as morseToText, aG as numberToOrdinal, aH as numberToRoman, aI as numberToWords, aJ as ordinalWords, aK as parseDiff, aL as parseTableData, aM as readabilityScore, aN as renderMarkdown, aO as romanToNumber, aP as scoreReadability, aQ as searchEmoji, aR as sentenceCount, aS as slugify, aT as slugifyAll, aU as syllableCount, aV as textToAscii, aW as textToMorse, aX as unescapeString, aY as wordFrequency } from '../text-xY5MJwr0.cjs';
|
package/dist/tools/text.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { A as AsciiFont, a as AsciiOptions, C as CASE_FORMATS, b as CaseFormat, c as ConvertOptions, D as DEFAULT_CONVERT_OPTIONS, d as
|
|
1
|
+
export { A as AsciiFont, a as AsciiOptions, C as CASE_FORMATS, b as CaseFormat, c as ConvertOptions, D as DEFAULT_CONVERT_OPTIONS, d as DashIssue, e as DashIssueType, f as DashUsageResult, g as DiffFile, h as DiffHunk, i as DiffLine, j as DiffResult, k as DiffType, l as DiffViewerLine, E as EMOJI_TABLE, m as ESCAPE_MODES, n as EmojiEntry, o as EscapeMode, F as FillerCategory, p as FillerMatch, q as FillerWordResult, K as KeywordDensityEntry, r as KeywordDensityOptions, s as KeywordDensityResult, L as LINE_OPS, u as LineOp, v as LineType, w as LoremUnit, M as MORSE_CODE, x as MarkdownResult, y as MorseOptions, O as OxfordCommaInstance, z as OxfordCommaResult, P as ParsedDiff, B as ParsedTable, G as PassiveVoiceMatch, H as PassiveVoiceResult, I as PassiveVoiceSentence, R as ReadabilityResult, J as ReadabilityScore, S as SentenceLengthBucket, N as SentenceLengthDistribution, Q as SlugSeparator, T as StringDistanceMode, U as StringDistanceResult, V as TableOptions, W as TextAnalysis, X as WordCountResult, Y as WordyPhraseMatch, Z as WordyPhraseResult, _ as addBorder, $ as analyzeKeywordDensity, a0 as analyzeSentenceLengths, a1 as analyzeText, a2 as applyOp, a3 as applyOps, a4 as calculateStringDistance, a5 as centerText, a6 as checkDashUsage, a7 as checkOxfordCommaConsistency, a8 as convertAll, a9 as convertCase, aa as countWords, ab as csvToHtml, ac as csvToMarkdown, ad as detectDelimiter, ae as detectFillerWords, af as detectPassiveVoice, ag as detectWordyPhrases, ah as diffLines, ai as diffLinesSimple, aj as diffStats, ak as escapeAll, al as escapeString, am as extractHeadings, an as formatReadingTime, ao as generate, ap as generateDiff, aq as generateHtmlTable, ar as generateMarkdownTable, as as generateParagraphs, at as generateSentences, au as generateWords, av as getAvailableFonts, aw as getEmojiByCategory, ax as getEmojiByChar, ay as getEmojiByShortcode, az as getEmojiCategories, aA as getMorseForChar, aB as getMorseTiming, aC as htmlToMarkdown, aD as isValidMorse, aE as markdownToHtml, aF as morseToText, aG as numberToOrdinal, aH as numberToRoman, aI as numberToWords, aJ as ordinalWords, aK as parseDiff, aL as parseTableData, aM as readabilityScore, aN as renderMarkdown, aO as romanToNumber, aP as scoreReadability, aQ as searchEmoji, aR as sentenceCount, aS as slugify, aT as slugifyAll, aU as syllableCount, aV as textToAscii, aW as textToMorse, aX as unescapeString, aY as wordFrequency } from '../text-xY5MJwr0.js';
|
package/dist/tools/text.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { CASE_FORMATS, DEFAULT_CONVERT_OPTIONS, EMOJI_TABLE, ESCAPE_MODES, LINE_OPS, MORSE_CODE, addBorder, analyzeKeywordDensity, analyzeSentenceLengths, analyzeText, applyOp, applyOps, calculateStringDistance, centerText, checkOxfordCommaConsistency, convertAll, convertCase, countWords, csvToHtml, csvToMarkdown, detectDelimiter, detectFillerWords, detectPassiveVoice, detectWordyPhrases, diffLines, diffLinesSimple, diffStats, escapeAll, escapeString, extractHeadings, formatReadingTime, generate, generateDiff, generateHtmlTable, generateMarkdownTable, generateParagraphs, generateSentences, generateWords, getAvailableFonts, getEmojiByCategory, getEmojiByChar, getEmojiByShortcode, getEmojiCategories, getMorseForChar, getMorseTiming, htmlToMarkdown, isValidMorse, markdownToHtml, morseToText, numberToOrdinal, numberToRoman, numberToWords, ordinalWords, parseDiff, parseTableData, readabilityScore, renderMarkdown, romanToNumber, scoreReadability, searchEmoji, sentenceCount, slugify, slugifyAll, syllableCount, textToAscii, textToMorse, unescapeString, wordFrequency } from '../chunk-
|
|
1
|
+
export { CASE_FORMATS, DEFAULT_CONVERT_OPTIONS, EMOJI_TABLE, ESCAPE_MODES, LINE_OPS, MORSE_CODE, addBorder, analyzeKeywordDensity, analyzeSentenceLengths, analyzeText, applyOp, applyOps, calculateStringDistance, centerText, checkDashUsage, checkOxfordCommaConsistency, convertAll, convertCase, countWords, csvToHtml, csvToMarkdown, detectDelimiter, detectFillerWords, detectPassiveVoice, detectWordyPhrases, diffLines, diffLinesSimple, diffStats, escapeAll, escapeString, extractHeadings, formatReadingTime, generate, generateDiff, generateHtmlTable, generateMarkdownTable, generateParagraphs, generateSentences, generateWords, getAvailableFonts, getEmojiByCategory, getEmojiByChar, getEmojiByShortcode, getEmojiCategories, getMorseForChar, getMorseTiming, htmlToMarkdown, isValidMorse, markdownToHtml, morseToText, numberToOrdinal, numberToRoman, numberToWords, ordinalWords, parseDiff, parseTableData, readabilityScore, renderMarkdown, romanToNumber, scoreReadability, searchEmoji, sentenceCount, slugify, slugifyAll, syllableCount, textToAscii, textToMorse, unescapeString, wordFrequency } from '../chunk-FB6CCFR5.js';
|
|
2
2
|
import '../chunk-MLKGABMK.js';
|
package/dist/tools/time.cjs
CHANGED
|
@@ -659,6 +659,42 @@ function getRunInterval(dates) {
|
|
|
659
659
|
const days = Math.round(diffMins / 1440);
|
|
660
660
|
return `Every ${days} days`;
|
|
661
661
|
}
|
|
662
|
+
var MAX_CRON_OVERLAPS = 200;
|
|
663
|
+
function findCronOverlaps(expressions, windowDays = 30, fromDate) {
|
|
664
|
+
if (expressions.length < 2) return { error: "Provide at least two cron expressions to check for overlaps" };
|
|
665
|
+
if (expressions.length > 10) return { error: "Provide 10 or fewer cron expressions" };
|
|
666
|
+
if (windowDays < 1 || windowDays > 365) return { error: "windowDays must be between 1 and 365" };
|
|
667
|
+
const parsedList = [];
|
|
668
|
+
for (let i = 0; i < expressions.length; i++) {
|
|
669
|
+
const parsed = parseCronExpression(expressions[i]);
|
|
670
|
+
if (typeof parsed === "object" && "error" in parsed) {
|
|
671
|
+
return { error: `Expression ${i + 1} ("${expressions[i]}"): ${parsed.error}` };
|
|
672
|
+
}
|
|
673
|
+
parsedList.push(parsed);
|
|
674
|
+
}
|
|
675
|
+
const start = fromDate ? new Date(fromDate) : /* @__PURE__ */ new Date();
|
|
676
|
+
const cursor = new Date(start);
|
|
677
|
+
cursor.setSeconds(0, 0);
|
|
678
|
+
cursor.setMinutes(cursor.getMinutes() + 1);
|
|
679
|
+
const endTime = cursor.getTime() + windowDays * 24 * 60 * 60 * 1e3;
|
|
680
|
+
const overlaps = [];
|
|
681
|
+
let truncated = false;
|
|
682
|
+
while (cursor.getTime() < endTime) {
|
|
683
|
+
const matched = [];
|
|
684
|
+
for (let i = 0; i < parsedList.length; i++) {
|
|
685
|
+
if (matchesCron(cursor, parsedList[i])) matched.push(i);
|
|
686
|
+
}
|
|
687
|
+
if (matched.length >= 2) {
|
|
688
|
+
if (overlaps.length >= MAX_CRON_OVERLAPS) {
|
|
689
|
+
truncated = true;
|
|
690
|
+
break;
|
|
691
|
+
}
|
|
692
|
+
overlaps.push({ date: new Date(cursor), expressionIndexes: matched });
|
|
693
|
+
}
|
|
694
|
+
cursor.setMinutes(cursor.getMinutes() + 1);
|
|
695
|
+
}
|
|
696
|
+
return { overlaps, windowDays, truncated };
|
|
697
|
+
}
|
|
662
698
|
var DURATION_SECONDS_PER_YEAR = 365 * 86400;
|
|
663
699
|
var DURATION_SECONDS_PER_MONTH = 30 * 86400;
|
|
664
700
|
function humanizeDurationParts(parts) {
|
|
@@ -756,6 +792,7 @@ exports.COMMON_DATE_PRESETS = COMMON_DATE_PRESETS;
|
|
|
756
792
|
exports.TIMEZONES = TIMEZONES;
|
|
757
793
|
exports.convertTime = convertTime;
|
|
758
794
|
exports.diffDates = diffDates;
|
|
795
|
+
exports.findCronOverlaps = findCronOverlaps;
|
|
759
796
|
exports.formatInTimezone = formatInTimezone;
|
|
760
797
|
exports.formatIso8601Duration = formatIso8601Duration;
|
|
761
798
|
exports.formatRelative = formatRelative;
|
package/dist/tools/time.d.cts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { C as COMMON_CRONS, a as COMMON_DATE_PRESETS, b as CronField, c as CronNextField, d as CronResult, D as DateDiffResult,
|
|
1
|
+
export { C as COMMON_CRONS, a as COMMON_DATE_PRESETS, b as CronField, c as CronNextField, d as CronOverlap, e as CronOverlapResult, f as CronResult, D as DateDiffResult, g as DurationFormatResult, h as DurationParseResult, P as ParsedCron, T as TIMEZONES, i as TimestampResult, j as TimezoneEntry, k as convertTime, l as diffDates, m as findCronOverlaps, n as formatInTimezone, o as formatIso8601Duration, p as formatRelative, q as formatRunDate, r as fromIsoString, s as fromUnix, u as getAllZonesForTime, v as getNextRuns, w as getNow, x as getRunInterval, y as getTimezoneOffset, z as humanizeDiff, A as parseCron, B as parseCronExpression, E as parseDate, F as parseIso8601Duration } from '../time-VMAy_SrV.cjs';
|
package/dist/tools/time.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { C as COMMON_CRONS, a as COMMON_DATE_PRESETS, b as CronField, c as CronNextField, d as CronResult, D as DateDiffResult,
|
|
1
|
+
export { C as COMMON_CRONS, a as COMMON_DATE_PRESETS, b as CronField, c as CronNextField, d as CronOverlap, e as CronOverlapResult, f as CronResult, D as DateDiffResult, g as DurationFormatResult, h as DurationParseResult, P as ParsedCron, T as TIMEZONES, i as TimestampResult, j as TimezoneEntry, k as convertTime, l as diffDates, m as findCronOverlaps, n as formatInTimezone, o as formatIso8601Duration, p as formatRelative, q as formatRunDate, r as fromIsoString, s as fromUnix, u as getAllZonesForTime, v as getNextRuns, w as getNow, x as getRunInterval, y as getTimezoneOffset, z as humanizeDiff, A as parseCron, B as parseCronExpression, E as parseDate, F as parseIso8601Duration } from '../time-VMAy_SrV.js';
|
package/dist/tools/time.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { COMMON_CRONS, COMMON_DATE_PRESETS, TIMEZONES, convertTime, diffDates, formatInTimezone, formatIso8601Duration, formatRelative, formatRunDate, fromIsoString, fromUnix, getAllZonesForTime, getNextRuns, getNow, getRunInterval, getTimezoneOffset, humanizeDiff, parseCron, parseCronExpression, parseDate, parseIso8601Duration } from '../chunk-
|
|
1
|
+
export { COMMON_CRONS, COMMON_DATE_PRESETS, TIMEZONES, convertTime, diffDates, findCronOverlaps, formatInTimezone, formatIso8601Duration, formatRelative, formatRunDate, fromIsoString, fromUnix, getAllZonesForTime, getNextRuns, getNow, getRunInterval, getTimezoneOffset, humanizeDiff, parseCron, parseCronExpression, parseDate, parseIso8601Duration } from '../chunk-6EJVNQSY.js';
|
|
2
2
|
import '../chunk-MLKGABMK.js';
|
package/dist/tools/units.cjs
CHANGED
|
@@ -2695,6 +2695,54 @@ function calculateRealRateOfReturn(input) {
|
|
|
2695
2695
|
solvedFor
|
|
2696
2696
|
};
|
|
2697
2697
|
}
|
|
2698
|
+
var CREDIT_CARD_MIN_PAYMENT_MAX_MONTHS = 1200;
|
|
2699
|
+
function calculateCreditCardMinimumPayment(balance, aprPercent, minPaymentPercent, minPaymentFloor = 0) {
|
|
2700
|
+
if (!Number.isFinite(balance) || balance <= 0) {
|
|
2701
|
+
return { error: "balance must be a finite number greater than zero" };
|
|
2702
|
+
}
|
|
2703
|
+
if (!Number.isFinite(aprPercent) || aprPercent < 0) {
|
|
2704
|
+
return { error: "aprPercent must be a finite, non-negative number" };
|
|
2705
|
+
}
|
|
2706
|
+
if (!Number.isFinite(minPaymentPercent) || minPaymentPercent <= 0) {
|
|
2707
|
+
return { error: "minPaymentPercent must be a finite number greater than zero" };
|
|
2708
|
+
}
|
|
2709
|
+
if (!Number.isFinite(minPaymentFloor) || minPaymentFloor < 0) {
|
|
2710
|
+
return { error: "minPaymentFloor must be a finite, non-negative number" };
|
|
2711
|
+
}
|
|
2712
|
+
const round22 = (n) => Math.round(n * 100) / 100;
|
|
2713
|
+
const monthlyRate = aprPercent / 100 / 12;
|
|
2714
|
+
let bal = balance;
|
|
2715
|
+
let totalInterestPaid = 0;
|
|
2716
|
+
let totalPaid = 0;
|
|
2717
|
+
let firstMonthPayment = 0;
|
|
2718
|
+
let finalMonthPayment = 0;
|
|
2719
|
+
let month = 0;
|
|
2720
|
+
while (bal > 5e-3 && month < CREDIT_CARD_MIN_PAYMENT_MAX_MONTHS) {
|
|
2721
|
+
month++;
|
|
2722
|
+
const interest = bal * monthlyRate;
|
|
2723
|
+
bal += interest;
|
|
2724
|
+
totalInterestPaid += interest;
|
|
2725
|
+
let payment = Math.max(bal * (minPaymentPercent / 100), minPaymentFloor);
|
|
2726
|
+
if (payment > bal) payment = bal;
|
|
2727
|
+
bal -= payment;
|
|
2728
|
+
totalPaid += payment;
|
|
2729
|
+
finalMonthPayment = round22(payment);
|
|
2730
|
+
if (month === 1) firstMonthPayment = round22(payment);
|
|
2731
|
+
}
|
|
2732
|
+
if (bal > 5e-3) {
|
|
2733
|
+
return {
|
|
2734
|
+
error: `balance cannot be paid off within ${CREDIT_CARD_MIN_PAYMENT_MAX_MONTHS} months at this minimum-payment formula; increase minPaymentPercent or minPaymentFloor`
|
|
2735
|
+
};
|
|
2736
|
+
}
|
|
2737
|
+
return {
|
|
2738
|
+
monthsToPayoff: month,
|
|
2739
|
+
yearsToPayoff: round22(month / 12),
|
|
2740
|
+
totalInterestPaid: round22(totalInterestPaid),
|
|
2741
|
+
totalPaid: round22(totalPaid),
|
|
2742
|
+
firstMonthPayment,
|
|
2743
|
+
finalMonthPayment
|
|
2744
|
+
};
|
|
2745
|
+
}
|
|
2698
2746
|
|
|
2699
2747
|
exports.BASE_LABELS = BASE_LABELS;
|
|
2700
2748
|
exports.BASE_PREFIXES = BASE_PREFIXES;
|
|
@@ -2721,6 +2769,7 @@ exports.calculateCashRounding = calculateCashRounding;
|
|
|
2721
2769
|
exports.calculateCdMaturity = calculateCdMaturity;
|
|
2722
2770
|
exports.calculateChange = calculateChange;
|
|
2723
2771
|
exports.calculateCompoundInterest = calculateCompoundInterest;
|
|
2772
|
+
exports.calculateCreditCardMinimumPayment = calculateCreditCardMinimumPayment;
|
|
2724
2773
|
exports.calculateCreditUtilization = calculateCreditUtilization;
|
|
2725
2774
|
exports.calculateDebtToIncomeRatio = calculateDebtToIncomeRatio;
|
|
2726
2775
|
exports.calculateDepreciationSchedule = calculateDepreciationSchedule;
|
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
|
|
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 CreditCardMinimumPaymentResult, L as CreditUtilizationResult, M as DebtItemInput, N as DebtItemResult, O as DebtPayoffComparison, P as DebtPayoffInput, Q as DebtPayoffPlanResult, R as DebtPayoffScheduleEntry, S as DebtPayoffStrategy, T as DebtPayoffStrategyResult, U as DebtToIncomeRatioResult, V as DepreciationMethod, W as DepreciationResult, X as DepreciationYear, Y as Dimensions, Z as DiscountField, _ as DiscountInput, $ as DiscountResult, a0 as DtiTier, a1 as EmiResult, a2 as EmiTenureUnit, a3 as EmiYearlyBreakdownRow, a4 as ExtraPaymentPayoffResult, a5 as FilePermissions, a6 as FileSizeUnit, a7 as FormatOptions, a8 as FreelancerRateInput, a9 as FreelancerRateResult, aa as GPA_GRADE_POINTS, ab as GpaCourse, ac as GpaCourseResult, ad as GpaResult, ae as IbanValidationResult, af as IpConversion, ag as IsbnFormat, ah as IsbnResult, ai as IsinValidationResult, aj as LoanBalanceInput, ak as LoanBalanceResult, al as LoanPrepaymentPenaltyResult, am as LoanRefinanceResult, an as LoanResult, ao as MarginMarkupField, ap as MarginMarkupInput, aq as MarginMarkupResult, ar as MortgagePointsResult, as as MovingAveragePoint, at as MovingAverageResult, au as NotationStyle, av as NumberBase, aw as PaybackPeriodInput, ax as PaybackPeriodResult, ay as PercentChangeDirection, az as PercentageChangeResult, aA as Permission, aB as PrepaymentPenaltyType, aC as PxConvertResult, aD as RealRateField, aE as RealRateOfReturnInput, aF as RealRateOfReturnResult, aG as RequiredBandwidthResult, aH as RoiInput, aI as RoiResult, aJ as RuleOf72Direction, aK as RuleOf72Result, aL as SavingsGoalInput, aM as SavingsGoalMode, aN as SavingsGoalResult, aO as SemverVersion, aP as SimpleInterestResult, aQ as SubnetInfo, aR as SuccessiveDiscountResult, aS as SuccessiveDiscountStep, aT as TaxDirection, aU as TaxEquivalentYieldDirection, aV as TaxEquivalentYieldResult, aW as TaxResult, aX as TimeValueDirection, aY as TimeValueResult, aZ as TipSplitResult, a_ as TransferSpeedUnit, a$ as TransferTimeResult, b0 as USD_DENOMINATIONS, b1 as UnitPriceItem, b2 as UnitPriceResult, b3 as UtilizationTier, b4 as VideoBitrateInput, b5 as VideoBitrateMode, b6 as VideoBitrateResult, b7 as ViewportConvertResult, b8 as VinValidationResult, b9 as applySuccessiveDiscounts, ba as autoFormat, bb as bumpVersion, bc as calcAspectRatio, bd as calcSubnet, be as calculateBlendedLoanRate, bf as calculateBreakEven, bg as calculateCashBreakdown, bh as calculateCashRounding, bi as calculateCdMaturity, bj as calculateChange, bk as calculateCompoundInterest, bl as calculateCreditCardMinimumPayment, bm as calculateCreditUtilization, bn as calculateDebtToIncomeRatio, bo as calculateDepreciationSchedule, bp as calculateDiscount, bq as calculateEmi, br as calculateExtraPaymentPayoff, bs as calculateFreelancerRate, bt as calculateGpa, bu as calculateLoan, bv as calculateLoanPrepaymentPenalty, bw as calculateLoanRefinance, bx as calculateMarginMarkup, by as calculateMortgagePoints, bz as calculateMovingAverages, bA as calculatePaybackPeriod, bB as calculatePercentageChange, bC as calculateRealRateOfReturn, bD as calculateRequiredBandwidth, bE as calculateRoi, bF as calculateRuleOf72, bG as calculateSavingsGoal, bH as calculateSimpleInterest, bI as calculateTax, bJ as calculateTaxEquivalentYield, bK as calculateTimeValue, bL as calculateTipSplit, bM as calculateTransferTime, bN as calculateVideoBitrate, bO as compareSemver, bP as compareUnitPrices, bQ as convert, bR as convertAprApy, bS as convertBytes, bT as convertIp, bU as coverBox, bV as decimalToIp, bW as decimalToIpCidr, bX as describePermissions, bY as fitIntoBox, bZ as formatNumber, b_ as formatValue, b$ as formatVwValue, c0 as formatWithSeparator, c1 as gcd, c2 as ipFromBinary, c3 as ipFromDecimal, c4 as ipFromHex, c5 as ipToBinary, c6 as ipToDecimal, c7 as ipToDecimalCidr, c8 as ipToHex, c9 as ipToOctal, ca as isValid, cb as isValidCidr, cc as isValidIp, cd as isValidIpv4, ce as marginToMarkup, cf as markupToMargin, cg as octalToPermissions, ch as parseFileSize, ci as parseInput, cj as parseNumberString, ck as parseSemver, cl as permissionsToChmod, cm as permissionsToOctal, cn as permissionsToSymbolic, co as planDebtPayoff, cp as ptToPx, cq as pxToAll, cr as pxToViewport, cs as remToPx, ct as satisfiesRange, cu as scaleByHeight, cv as scaleByWidth, cw as sortVersions, cx as splitSubnet, cy as symbolicToPermissions, cz as validateBarcode, cA as validateCardNumber, cB as validateIban, cC as validateIsbn, cD as validateIsin, cE as validateVin, cF as viewportToPx } from '../units-DwIvTP-X.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
|
|
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 CreditCardMinimumPaymentResult, L as CreditUtilizationResult, M as DebtItemInput, N as DebtItemResult, O as DebtPayoffComparison, P as DebtPayoffInput, Q as DebtPayoffPlanResult, R as DebtPayoffScheduleEntry, S as DebtPayoffStrategy, T as DebtPayoffStrategyResult, U as DebtToIncomeRatioResult, V as DepreciationMethod, W as DepreciationResult, X as DepreciationYear, Y as Dimensions, Z as DiscountField, _ as DiscountInput, $ as DiscountResult, a0 as DtiTier, a1 as EmiResult, a2 as EmiTenureUnit, a3 as EmiYearlyBreakdownRow, a4 as ExtraPaymentPayoffResult, a5 as FilePermissions, a6 as FileSizeUnit, a7 as FormatOptions, a8 as FreelancerRateInput, a9 as FreelancerRateResult, aa as GPA_GRADE_POINTS, ab as GpaCourse, ac as GpaCourseResult, ad as GpaResult, ae as IbanValidationResult, af as IpConversion, ag as IsbnFormat, ah as IsbnResult, ai as IsinValidationResult, aj as LoanBalanceInput, ak as LoanBalanceResult, al as LoanPrepaymentPenaltyResult, am as LoanRefinanceResult, an as LoanResult, ao as MarginMarkupField, ap as MarginMarkupInput, aq as MarginMarkupResult, ar as MortgagePointsResult, as as MovingAveragePoint, at as MovingAverageResult, au as NotationStyle, av as NumberBase, aw as PaybackPeriodInput, ax as PaybackPeriodResult, ay as PercentChangeDirection, az as PercentageChangeResult, aA as Permission, aB as PrepaymentPenaltyType, aC as PxConvertResult, aD as RealRateField, aE as RealRateOfReturnInput, aF as RealRateOfReturnResult, aG as RequiredBandwidthResult, aH as RoiInput, aI as RoiResult, aJ as RuleOf72Direction, aK as RuleOf72Result, aL as SavingsGoalInput, aM as SavingsGoalMode, aN as SavingsGoalResult, aO as SemverVersion, aP as SimpleInterestResult, aQ as SubnetInfo, aR as SuccessiveDiscountResult, aS as SuccessiveDiscountStep, aT as TaxDirection, aU as TaxEquivalentYieldDirection, aV as TaxEquivalentYieldResult, aW as TaxResult, aX as TimeValueDirection, aY as TimeValueResult, aZ as TipSplitResult, a_ as TransferSpeedUnit, a$ as TransferTimeResult, b0 as USD_DENOMINATIONS, b1 as UnitPriceItem, b2 as UnitPriceResult, b3 as UtilizationTier, b4 as VideoBitrateInput, b5 as VideoBitrateMode, b6 as VideoBitrateResult, b7 as ViewportConvertResult, b8 as VinValidationResult, b9 as applySuccessiveDiscounts, ba as autoFormat, bb as bumpVersion, bc as calcAspectRatio, bd as calcSubnet, be as calculateBlendedLoanRate, bf as calculateBreakEven, bg as calculateCashBreakdown, bh as calculateCashRounding, bi as calculateCdMaturity, bj as calculateChange, bk as calculateCompoundInterest, bl as calculateCreditCardMinimumPayment, bm as calculateCreditUtilization, bn as calculateDebtToIncomeRatio, bo as calculateDepreciationSchedule, bp as calculateDiscount, bq as calculateEmi, br as calculateExtraPaymentPayoff, bs as calculateFreelancerRate, bt as calculateGpa, bu as calculateLoan, bv as calculateLoanPrepaymentPenalty, bw as calculateLoanRefinance, bx as calculateMarginMarkup, by as calculateMortgagePoints, bz as calculateMovingAverages, bA as calculatePaybackPeriod, bB as calculatePercentageChange, bC as calculateRealRateOfReturn, bD as calculateRequiredBandwidth, bE as calculateRoi, bF as calculateRuleOf72, bG as calculateSavingsGoal, bH as calculateSimpleInterest, bI as calculateTax, bJ as calculateTaxEquivalentYield, bK as calculateTimeValue, bL as calculateTipSplit, bM as calculateTransferTime, bN as calculateVideoBitrate, bO as compareSemver, bP as compareUnitPrices, bQ as convert, bR as convertAprApy, bS as convertBytes, bT as convertIp, bU as coverBox, bV as decimalToIp, bW as decimalToIpCidr, bX as describePermissions, bY as fitIntoBox, bZ as formatNumber, b_ as formatValue, b$ as formatVwValue, c0 as formatWithSeparator, c1 as gcd, c2 as ipFromBinary, c3 as ipFromDecimal, c4 as ipFromHex, c5 as ipToBinary, c6 as ipToDecimal, c7 as ipToDecimalCidr, c8 as ipToHex, c9 as ipToOctal, ca as isValid, cb as isValidCidr, cc as isValidIp, cd as isValidIpv4, ce as marginToMarkup, cf as markupToMargin, cg as octalToPermissions, ch as parseFileSize, ci as parseInput, cj as parseNumberString, ck as parseSemver, cl as permissionsToChmod, cm as permissionsToOctal, cn as permissionsToSymbolic, co as planDebtPayoff, cp as ptToPx, cq as pxToAll, cr as pxToViewport, cs as remToPx, ct as satisfiesRange, cu as scaleByHeight, cv as scaleByWidth, cw as sortVersions, cx as splitSubnet, cy as symbolicToPermissions, cz as validateBarcode, cA as validateCardNumber, cB as validateIban, cC as validateIsbn, cD as validateIsin, cE as validateVin, cF as viewportToPx } from '../units-DwIvTP-X.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, calculateLoanPrepaymentPenalty, calculateLoanRefinance, calculateMarginMarkup, calculateMortgagePoints, calculateMovingAverages, calculatePaybackPeriod, calculatePercentageChange, calculateRealRateOfReturn, calculateRequiredBandwidth, calculateRoi, calculateRuleOf72, calculateSavingsGoal, calculateSimpleInterest, calculateTax, calculateTaxEquivalentYield, calculateTimeValue, calculateTipSplit, calculateTransferTime, 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, calculateCreditCardMinimumPayment, calculateCreditUtilization, calculateDebtToIncomeRatio, calculateDepreciationSchedule, calculateDiscount, calculateEmi, calculateExtraPaymentPayoff, calculateFreelancerRate, calculateGpa, calculateLoan, calculateLoanPrepaymentPenalty, calculateLoanRefinance, calculateMarginMarkup, calculateMortgagePoints, calculateMovingAverages, calculatePaybackPeriod, calculatePercentageChange, calculateRealRateOfReturn, calculateRequiredBandwidth, calculateRoi, calculateRuleOf72, calculateSavingsGoal, calculateSimpleInterest, calculateTax, calculateTaxEquivalentYield, calculateTimeValue, calculateTipSplit, calculateTransferTime, 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-BCISWFVJ.js';
|
|
2
2
|
import '../chunk-MLKGABMK.js';
|