@utilix-tech/sdk 0.75.0 → 0.77.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 +24 -4
- package/dist/{chunk-CXUOV672.js → chunk-KWS4ZCYG.js} +119 -1
- package/dist/{chunk-P7TXG7CI.js → chunk-QVOK3BXM.js} +97 -1
- package/dist/{chunk-PT4N4UBL.js → chunk-ZWFZRDQ4.js} +70 -1
- package/dist/index.cjs +283 -0
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/{media-56zrIBw4.d.ts → media-DF8BS-iA.d.cts} +33 -2
- package/dist/{media-56zrIBw4.d.cts → media-DF8BS-iA.d.ts} +33 -2
- package/dist/{network-Da3meCWM.d.cts → network-BskZe1n2.d.cts} +34 -2
- package/dist/{network-Da3meCWM.d.ts → network-BskZe1n2.d.ts} +34 -2
- package/dist/{text-DWUcY8H1.d.cts → text-CNn3whZA.d.cts} +55 -2
- package/dist/{text-DWUcY8H1.d.ts → text-CNn3whZA.d.ts} +55 -2
- package/dist/tools/media.cjs +69 -0
- package/dist/tools/media.d.cts +1 -1
- package/dist/tools/media.d.ts +1 -1
- package/dist/tools/media.js +1 -1
- package/dist/tools/network.cjs +118 -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/text.cjs +96 -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/package.json +1 -1
package/dist/tools/network.cjs
CHANGED
|
@@ -3428,6 +3428,123 @@ function calculateCookieSizeBudget(cookieHeader, budgetBytes = DEFAULT_COOKIE_BU
|
|
|
3428
3428
|
exceedsBudget: totalBytes > budgetBytes
|
|
3429
3429
|
};
|
|
3430
3430
|
}
|
|
3431
|
+
function parseRawHeaderBlock(raw) {
|
|
3432
|
+
const map = /* @__PURE__ */ new Map();
|
|
3433
|
+
for (const line of raw.split(/\r?\n/)) {
|
|
3434
|
+
const trimmed = line.trim();
|
|
3435
|
+
if (!trimmed) continue;
|
|
3436
|
+
const idx = trimmed.indexOf(":");
|
|
3437
|
+
if (idx === -1) continue;
|
|
3438
|
+
const name = trimmed.slice(0, idx).trim().toLowerCase();
|
|
3439
|
+
const value = trimmed.slice(idx + 1).trim();
|
|
3440
|
+
if (!map.has(name)) map.set(name, value);
|
|
3441
|
+
}
|
|
3442
|
+
return map;
|
|
3443
|
+
}
|
|
3444
|
+
var SECURITY_HEADER_CHECKS = [
|
|
3445
|
+
{
|
|
3446
|
+
header: "Content-Security-Policy",
|
|
3447
|
+
evaluate: (v) => {
|
|
3448
|
+
if (!v) return { status: "missing", note: "Without a CSP, an injected script runs with full page privileges." };
|
|
3449
|
+
if (/unsafe-inline|unsafe-eval/i.test(v)) return { status: "warning", note: "Contains unsafe-inline or unsafe-eval, which weakens XSS protection." };
|
|
3450
|
+
return { status: "pass", note: "Present. Use the CSP Header Builder tool to validate its directives in depth." };
|
|
3451
|
+
}
|
|
3452
|
+
},
|
|
3453
|
+
{
|
|
3454
|
+
header: "Strict-Transport-Security",
|
|
3455
|
+
evaluate: (v) => {
|
|
3456
|
+
if (!v) return { status: "missing", note: "Without HSTS, a user's first visit (and any later downgrade) can be sent over plain HTTP." };
|
|
3457
|
+
const maxAgeMatch = v.match(/max-age\s*=\s*(\d+)/i);
|
|
3458
|
+
if (!maxAgeMatch) return { status: "warning", note: "Present but missing a max-age directive." };
|
|
3459
|
+
const maxAge = Number(maxAgeMatch[1]);
|
|
3460
|
+
if (maxAge < 31536e3) return { status: "warning", note: "max-age is below the recommended 1 year (31536000 seconds)." };
|
|
3461
|
+
return { status: "pass", note: "Present with a max-age of at least 1 year." };
|
|
3462
|
+
}
|
|
3463
|
+
},
|
|
3464
|
+
{
|
|
3465
|
+
header: "X-Content-Type-Options",
|
|
3466
|
+
evaluate: (v) => {
|
|
3467
|
+
if (!v) return { status: "missing", note: "Without this header, browsers may MIME-sniff a response into an unintended content type." };
|
|
3468
|
+
if (v.trim().toLowerCase() !== "nosniff") return { status: "warning", note: `"nosniff" is the only valid value; this value won't take effect.` };
|
|
3469
|
+
return { status: "pass", note: "Set to the only valid value, nosniff." };
|
|
3470
|
+
}
|
|
3471
|
+
},
|
|
3472
|
+
{
|
|
3473
|
+
header: "X-Frame-Options",
|
|
3474
|
+
evaluate: (v) => {
|
|
3475
|
+
if (!v) return { status: "missing", note: "Without this (or a CSP frame-ancestors directive), the page can be framed by another site for clickjacking." };
|
|
3476
|
+
const upper = v.trim().toUpperCase();
|
|
3477
|
+
if (upper === "DENY" || upper === "SAMEORIGIN") return { status: "pass", note: `Framing restricted (${upper}).` };
|
|
3478
|
+
if (upper.startsWith("ALLOW-FROM")) return { status: "warning", note: "ALLOW-FROM is deprecated and ignored by most modern browsers." };
|
|
3479
|
+
return { status: "warning", note: "Unrecognized value." };
|
|
3480
|
+
}
|
|
3481
|
+
},
|
|
3482
|
+
{
|
|
3483
|
+
header: "Referrer-Policy",
|
|
3484
|
+
evaluate: (v) => {
|
|
3485
|
+
if (!v) return { status: "missing", note: "Without this header, the browser's default referrer behavior applies, which can leak full URLs to third parties." };
|
|
3486
|
+
if (v.trim().toLowerCase() === "unsafe-url") return { status: "warning", note: "unsafe-url leaks the full URL, including path and query string, to every destination." };
|
|
3487
|
+
return { status: "pass", note: "Present." };
|
|
3488
|
+
}
|
|
3489
|
+
},
|
|
3490
|
+
{
|
|
3491
|
+
header: "Permissions-Policy",
|
|
3492
|
+
evaluate: (v) => {
|
|
3493
|
+
if (!v) return { status: "missing", note: "Without this header, embedded content can use powerful browser features (camera, geolocation, etc.) unless restricted another way." };
|
|
3494
|
+
return { status: "pass", note: "Present." };
|
|
3495
|
+
}
|
|
3496
|
+
},
|
|
3497
|
+
{
|
|
3498
|
+
header: "Cross-Origin-Opener-Policy",
|
|
3499
|
+
evaluate: (v) => {
|
|
3500
|
+
if (!v) return { status: "missing", note: "Without COOP, this page can be put in the same browsing context group as a malicious opener window." };
|
|
3501
|
+
const lower = v.trim().toLowerCase();
|
|
3502
|
+
if (lower === "same-origin") return { status: "pass", note: "Set to same-origin, the strongest isolation value." };
|
|
3503
|
+
return { status: "warning", note: `Set to "${v.trim()}", which is weaker than same-origin.` };
|
|
3504
|
+
}
|
|
3505
|
+
},
|
|
3506
|
+
{
|
|
3507
|
+
header: "Cross-Origin-Embedder-Policy",
|
|
3508
|
+
evaluate: (v) => {
|
|
3509
|
+
if (!v) return { status: "missing", note: "Required alongside COOP for cross-origin isolation (e.g. to use SharedArrayBuffer)." };
|
|
3510
|
+
const lower = v.trim().toLowerCase();
|
|
3511
|
+
if (lower === "require-corp" || lower === "credentialless") return { status: "pass", note: `Set to ${lower}.` };
|
|
3512
|
+
return { status: "warning", note: `Unrecognized value "${v.trim()}".` };
|
|
3513
|
+
}
|
|
3514
|
+
},
|
|
3515
|
+
{
|
|
3516
|
+
header: "Cross-Origin-Resource-Policy",
|
|
3517
|
+
evaluate: (v) => {
|
|
3518
|
+
if (!v) return { status: "missing", note: "Without CORP, this resource can be loaded cross-origin by any site that knows its URL." };
|
|
3519
|
+
const lower = v.trim().toLowerCase();
|
|
3520
|
+
if (lower === "same-origin" || lower === "same-site") return { status: "pass", note: `Set to ${lower}.` };
|
|
3521
|
+
if (lower === "cross-origin") return { status: "warning", note: "Set to cross-origin, which allows any site to load this resource." };
|
|
3522
|
+
return { status: "warning", note: `Unrecognized value "${v.trim()}".` };
|
|
3523
|
+
}
|
|
3524
|
+
}
|
|
3525
|
+
];
|
|
3526
|
+
function scoreSecurityHeaders(rawHeaders) {
|
|
3527
|
+
if (typeof rawHeaders !== "string" || !rawHeaders.trim()) {
|
|
3528
|
+
return { error: 'Paste one or more response headers, one per line in "Name: value" form' };
|
|
3529
|
+
}
|
|
3530
|
+
const headerMap = parseRawHeaderBlock(rawHeaders);
|
|
3531
|
+
if (headerMap.size === 0) {
|
|
3532
|
+
return { error: 'Could not parse any "Name: value" header lines from the input' };
|
|
3533
|
+
}
|
|
3534
|
+
const checks = SECURITY_HEADER_CHECKS.map((def) => {
|
|
3535
|
+
const value = headerMap.get(def.header.toLowerCase()) ?? null;
|
|
3536
|
+
const { status, note } = def.evaluate(value);
|
|
3537
|
+
return { header: def.header, status, value, note };
|
|
3538
|
+
});
|
|
3539
|
+
const passCount = checks.filter((c) => c.status === "pass").length;
|
|
3540
|
+
const warningCount = checks.filter((c) => c.status === "warning").length;
|
|
3541
|
+
const missingCount = checks.filter((c) => c.status === "missing").length;
|
|
3542
|
+
const totalChecks = checks.length;
|
|
3543
|
+
const points = passCount + warningCount * 0.5;
|
|
3544
|
+
const score = Math.round(points / totalChecks * 100);
|
|
3545
|
+
const grade = score >= 90 ? "A" : score >= 75 ? "B" : score >= 60 ? "C" : score >= 40 ? "D" : "F";
|
|
3546
|
+
return { checks, score, grade, passCount, warningCount, missingCount, totalChecks };
|
|
3547
|
+
}
|
|
3431
3548
|
|
|
3432
3549
|
exports.CLIENT_HINTS = CLIENT_HINTS;
|
|
3433
3550
|
exports.DNS_RECORD_TYPES = DNS_RECORD_TYPES;
|
|
@@ -3498,6 +3615,7 @@ exports.parseUserAgent = parseUserAgent;
|
|
|
3498
3615
|
exports.parseVaryHeader = parseVaryHeader;
|
|
3499
3616
|
exports.parseXContentTypeOptionsHeader = parseXContentTypeOptionsHeader;
|
|
3500
3617
|
exports.parseXRobotsTag = parseXRobotsTag;
|
|
3618
|
+
exports.scoreSecurityHeaders = scoreSecurityHeaders;
|
|
3501
3619
|
exports.searchHeaders = searchHeaders;
|
|
3502
3620
|
exports.searchStatusCodes = searchStatusCodes;
|
|
3503
3621
|
exports.splitSitemap = splitSitemap;
|
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, 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
|
|
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 SecurityHeaderCheck, aw as SecurityHeaderStatus, ax as SecurityHeadersScorecard, ay as SitemapIndexEntry, az as SitemapIssue, aA as SitemapSplitFile, aB as SitemapUrlEntry, aC as SitemapValidationResult, aD as SplitSitemapOptions, aE as SplitSitemapResult, aF as StatusCode, aG as UaDeviceType, aH as UserAgentInfo, aI as VaryHeaderEntry, aJ as VaryHeaderResult, aK as XContentTypeOptionsHeader, aL as XContentTypeOptionsParseResult, aM as XRobotsTagFlag, aN as XRobotsTagOptions, aO as XRobotsTagResult, aP as X_CONTENT_TYPE_OPTIONS_HEADER, aQ as analyzeEmailHeaders, aR as assessContentTypeRisk, aS as buildAcceptLanguage, aT as buildCacheControl, aU as buildClientHints, aV as buildContentDisposition, aW as buildDnsQueryUrl, aX as buildGeoUrl, aY as buildHsts, aZ as buildLinkHeader, a_ as buildMapUrl, a$ as buildPermissionsPolicy, b0 as buildPreferHeader, b1 as buildPriorityHeader, b2 as buildRangeHeader, b3 as buildReferrerPolicy, b4 as buildRetryAfterHeader, b5 as buildRobotsMetaTag, b6 as buildVaryHeader, b7 as buildXContentTypeOptionsHeader, b8 as buildXRobotsTag, b9 as calculateCookieSizeBudget, ba as checkSetCookieHeader, bb as countryCodeToFlag, bc as extractMultipartBoundary, bd as formatCoordinates, be as formatTtl, bf as getByCategory, bg as getHeader, bh as getHeadersByCategory, bi as getStatusByCategory, bj as getStatusCode, bk as isClientError, bl as isServerError, bm as isSuccess, bn as isValidIp, bo as isValidIpv4, bp as isValidIpv6, bq as listCloseCodes, br as listOpcodes, bs as lookupCloseCode, bt as lookupOpcode, bu as parseAcceptLanguage, bv as parseClientHintHeaders, bw as parseContentDisposition, bx as parseContentRangeHeader, by as parseDnsResponse, bz as parseGeoResponse, bA as parseHar, bB as parseHsts, bC as parseIpv6Address, bD as parseMultipartFormData, bE as parsePermissionsPolicy, bF as parsePreferHeader, bG as parsePriorityHeader, bH as parseRetryAfterHeader, bI as parseRobotsMetaTag, bJ as parseUserAgent, bK as parseVaryHeader, bL as parseXContentTypeOptionsHeader, bM as parseXRobotsTag, bN as scoreSecurityHeaders, bO as searchHeaders, bP as searchStatusCodes, bQ as splitSitemap, bR as statusCodeToText, bS as typeNumberToLabel, bT as validateDomain, bU as validateHeaderName, bV as validateHeaderValue, bW as validateManifest, bX as validateRobotsTxt, bY as validateSitemap } from '../network-BskZe1n2.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, 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
|
|
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 SecurityHeaderCheck, aw as SecurityHeaderStatus, ax as SecurityHeadersScorecard, ay as SitemapIndexEntry, az as SitemapIssue, aA as SitemapSplitFile, aB as SitemapUrlEntry, aC as SitemapValidationResult, aD as SplitSitemapOptions, aE as SplitSitemapResult, aF as StatusCode, aG as UaDeviceType, aH as UserAgentInfo, aI as VaryHeaderEntry, aJ as VaryHeaderResult, aK as XContentTypeOptionsHeader, aL as XContentTypeOptionsParseResult, aM as XRobotsTagFlag, aN as XRobotsTagOptions, aO as XRobotsTagResult, aP as X_CONTENT_TYPE_OPTIONS_HEADER, aQ as analyzeEmailHeaders, aR as assessContentTypeRisk, aS as buildAcceptLanguage, aT as buildCacheControl, aU as buildClientHints, aV as buildContentDisposition, aW as buildDnsQueryUrl, aX as buildGeoUrl, aY as buildHsts, aZ as buildLinkHeader, a_ as buildMapUrl, a$ as buildPermissionsPolicy, b0 as buildPreferHeader, b1 as buildPriorityHeader, b2 as buildRangeHeader, b3 as buildReferrerPolicy, b4 as buildRetryAfterHeader, b5 as buildRobotsMetaTag, b6 as buildVaryHeader, b7 as buildXContentTypeOptionsHeader, b8 as buildXRobotsTag, b9 as calculateCookieSizeBudget, ba as checkSetCookieHeader, bb as countryCodeToFlag, bc as extractMultipartBoundary, bd as formatCoordinates, be as formatTtl, bf as getByCategory, bg as getHeader, bh as getHeadersByCategory, bi as getStatusByCategory, bj as getStatusCode, bk as isClientError, bl as isServerError, bm as isSuccess, bn as isValidIp, bo as isValidIpv4, bp as isValidIpv6, bq as listCloseCodes, br as listOpcodes, bs as lookupCloseCode, bt as lookupOpcode, bu as parseAcceptLanguage, bv as parseClientHintHeaders, bw as parseContentDisposition, bx as parseContentRangeHeader, by as parseDnsResponse, bz as parseGeoResponse, bA as parseHar, bB as parseHsts, bC as parseIpv6Address, bD as parseMultipartFormData, bE as parsePermissionsPolicy, bF as parsePreferHeader, bG as parsePriorityHeader, bH as parseRetryAfterHeader, bI as parseRobotsMetaTag, bJ as parseUserAgent, bK as parseVaryHeader, bL as parseXContentTypeOptionsHeader, bM as parseXRobotsTag, bN as scoreSecurityHeaders, bO as searchHeaders, bP as searchStatusCodes, bQ as splitSitemap, bR as statusCodeToText, bS as typeNumberToLabel, bT as validateDomain, bU as validateHeaderName, bV as validateHeaderValue, bW as validateManifest, bX as validateRobotsTxt, bY as validateSitemap } from '../network-BskZe1n2.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, 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-
|
|
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, scoreSecurityHeaders, searchHeaders, searchStatusCodes, splitSitemap, statusCodeToText, typeNumberToLabel, validateDomain, validateHeaderName, validateHeaderValue, validateManifest, validateRobotsTxt, validateSitemap } from '../chunk-KWS4ZCYG.js';
|
|
2
2
|
import '../chunk-MLKGABMK.js';
|
package/dist/tools/text.cjs
CHANGED
|
@@ -3027,6 +3027,100 @@ function getEmojiByCategory(category) {
|
|
|
3027
3027
|
function getEmojiCategories() {
|
|
3028
3028
|
return Array.from(new Set(EMOJI_TABLE.map((e) => e.category)));
|
|
3029
3029
|
}
|
|
3030
|
+
var WORDY_PHRASES = [
|
|
3031
|
+
{ phrase: "due to the fact that", suggestion: "because" },
|
|
3032
|
+
{ phrase: "in spite of the fact that", suggestion: "although" },
|
|
3033
|
+
{ phrase: "despite the fact that", suggestion: "although" },
|
|
3034
|
+
{ phrase: "in order to", suggestion: "to" },
|
|
3035
|
+
{ phrase: "for the purpose of", suggestion: "for" },
|
|
3036
|
+
{ phrase: "in the event that", suggestion: "if" },
|
|
3037
|
+
{ phrase: "in the near future", suggestion: "soon" },
|
|
3038
|
+
{ phrase: "at this point in time", suggestion: "now" },
|
|
3039
|
+
{ phrase: "at the present time", suggestion: "now" },
|
|
3040
|
+
{ phrase: "on a daily basis", suggestion: "daily" },
|
|
3041
|
+
{ phrase: "on a regular basis", suggestion: "regularly" },
|
|
3042
|
+
{ phrase: "in a timely manner", suggestion: "promptly" },
|
|
3043
|
+
{ phrase: "with regard to", suggestion: "regarding" },
|
|
3044
|
+
{ phrase: "with respect to", suggestion: "regarding" },
|
|
3045
|
+
{ phrase: "in regards to", suggestion: "regarding" },
|
|
3046
|
+
{ phrase: "with the exception of", suggestion: "except" },
|
|
3047
|
+
{ phrase: "in close proximity to", suggestion: "near" },
|
|
3048
|
+
{ phrase: "take into consideration", suggestion: "consider" },
|
|
3049
|
+
{ phrase: "give consideration to", suggestion: "consider" },
|
|
3050
|
+
{ phrase: "make a decision", suggestion: "decide" },
|
|
3051
|
+
{ phrase: "is able to", suggestion: "can" },
|
|
3052
|
+
{ phrase: "are able to", suggestion: "can" },
|
|
3053
|
+
{ phrase: "a large number of", suggestion: "many" },
|
|
3054
|
+
{ phrase: "a majority of", suggestion: "most" },
|
|
3055
|
+
{ phrase: "each and every", suggestion: "each" },
|
|
3056
|
+
{ phrase: "first and foremost", suggestion: "first" },
|
|
3057
|
+
{ phrase: "last but not least", suggestion: "finally" },
|
|
3058
|
+
{ phrase: "null and void", suggestion: "void" },
|
|
3059
|
+
{ phrase: "whether or not", suggestion: "whether" },
|
|
3060
|
+
{ phrase: "the reason why", suggestion: "the reason" },
|
|
3061
|
+
{ phrase: "end result", suggestion: "result" },
|
|
3062
|
+
{ phrase: "future plans", suggestion: "plans" },
|
|
3063
|
+
{ phrase: "past history", suggestion: "history" },
|
|
3064
|
+
{ phrase: "basic fundamentals", suggestion: "fundamentals" },
|
|
3065
|
+
{ phrase: "absolutely essential", suggestion: "essential" },
|
|
3066
|
+
{ phrase: "it is important to note that", suggestion: "(often removable)" },
|
|
3067
|
+
{ phrase: "as a matter of fact", suggestion: "in fact" },
|
|
3068
|
+
{ phrase: "in the process of", suggestion: "(often removable)" }
|
|
3069
|
+
];
|
|
3070
|
+
function _wordyRegex(phrase) {
|
|
3071
|
+
const tokens = phrase.split(/\s+/).map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
|
|
3072
|
+
return new RegExp("\\b" + tokens.join("\\s+") + "\\b", "gi");
|
|
3073
|
+
}
|
|
3074
|
+
function detectWordyPhrases(text) {
|
|
3075
|
+
const totalWords = (text.match(/[A-Za-z0-9']+/g) ?? []).length;
|
|
3076
|
+
const matches = [];
|
|
3077
|
+
for (const entry of WORDY_PHRASES) {
|
|
3078
|
+
const re = _wordyRegex(entry.phrase);
|
|
3079
|
+
const indices = [];
|
|
3080
|
+
let m;
|
|
3081
|
+
while ((m = re.exec(text)) !== null) {
|
|
3082
|
+
indices.push(m.index);
|
|
3083
|
+
if (m.index === re.lastIndex) re.lastIndex++;
|
|
3084
|
+
}
|
|
3085
|
+
if (indices.length > 0) {
|
|
3086
|
+
matches.push({ phrase: entry.phrase, suggestion: entry.suggestion, count: indices.length, indices });
|
|
3087
|
+
}
|
|
3088
|
+
}
|
|
3089
|
+
matches.sort((a, b) => b.count - a.count || a.phrase.localeCompare(b.phrase));
|
|
3090
|
+
const totalMatches = matches.reduce((s, m) => s + m.count, 0);
|
|
3091
|
+
const density = totalWords > 0 ? Math.round(totalMatches / totalWords * 1e3) / 10 : 0;
|
|
3092
|
+
return { totalWords, totalMatches, density, matches };
|
|
3093
|
+
}
|
|
3094
|
+
var _OXFORD_CONJ_RE = /(,)?\s+\b(?:and|or)\b\s+/gi;
|
|
3095
|
+
function checkOxfordCommaConsistency(text) {
|
|
3096
|
+
const instances = [];
|
|
3097
|
+
_OXFORD_CONJ_RE.lastIndex = 0;
|
|
3098
|
+
let m;
|
|
3099
|
+
while ((m = _OXFORD_CONJ_RE.exec(text)) !== null) {
|
|
3100
|
+
const matchStart = m.index;
|
|
3101
|
+
const hasCommaBefore = !!m[1];
|
|
3102
|
+
let clauseStart = -1;
|
|
3103
|
+
for (const ch of [".", "!", "?", "\n"]) {
|
|
3104
|
+
const idx = text.lastIndexOf(ch, matchStart - 1);
|
|
3105
|
+
if (idx > clauseStart) clauseStart = idx;
|
|
3106
|
+
}
|
|
3107
|
+
clauseStart += 1;
|
|
3108
|
+
const clause = text.slice(clauseStart, matchStart);
|
|
3109
|
+
const commaCount = (clause.match(/,/g) ?? []).length;
|
|
3110
|
+
if (commaCount < 1) continue;
|
|
3111
|
+
const snippetStart = Math.max(clauseStart, matchStart - 60);
|
|
3112
|
+
const afterConjEnd = _OXFORD_CONJ_RE.lastIndex;
|
|
3113
|
+
const tail = text.slice(afterConjEnd);
|
|
3114
|
+
const boundaryOffset = tail.search(/[.!?\n,]/);
|
|
3115
|
+
const snippetEnd = boundaryOffset === -1 ? Math.min(text.length, afterConjEnd + 40) : afterConjEnd + boundaryOffset;
|
|
3116
|
+
const snippet = text.slice(snippetStart, snippetEnd).trim();
|
|
3117
|
+
instances.push({ snippet, hasOxfordComma: hasCommaBefore, index: matchStart });
|
|
3118
|
+
}
|
|
3119
|
+
const withOxfordComma = instances.filter((i) => i.hasOxfordComma).length;
|
|
3120
|
+
const withoutOxfordComma = instances.length - withOxfordComma;
|
|
3121
|
+
const consistent = withOxfordComma === 0 || withoutOxfordComma === 0;
|
|
3122
|
+
return { totalLists: instances.length, withOxfordComma, withoutOxfordComma, consistent, instances };
|
|
3123
|
+
}
|
|
3030
3124
|
|
|
3031
3125
|
exports.CASE_FORMATS = CASE_FORMATS;
|
|
3032
3126
|
exports.DEFAULT_CONVERT_OPTIONS = DEFAULT_CONVERT_OPTIONS;
|
|
@@ -3042,6 +3136,7 @@ exports.applyOp = applyOp;
|
|
|
3042
3136
|
exports.applyOps = applyOps;
|
|
3043
3137
|
exports.calculateStringDistance = calculateStringDistance;
|
|
3044
3138
|
exports.centerText = centerText;
|
|
3139
|
+
exports.checkOxfordCommaConsistency = checkOxfordCommaConsistency;
|
|
3045
3140
|
exports.convertAll = convertAll;
|
|
3046
3141
|
exports.convertCase = convertCase;
|
|
3047
3142
|
exports.countWords = countWords;
|
|
@@ -3050,6 +3145,7 @@ exports.csvToMarkdown = csvToMarkdown;
|
|
|
3050
3145
|
exports.detectDelimiter = detectDelimiter;
|
|
3051
3146
|
exports.detectFillerWords = detectFillerWords;
|
|
3052
3147
|
exports.detectPassiveVoice = detectPassiveVoice;
|
|
3148
|
+
exports.detectWordyPhrases = detectWordyPhrases;
|
|
3053
3149
|
exports.diffLines = diffLines;
|
|
3054
3150
|
exports.diffLinesSimple = diffLinesSimple;
|
|
3055
3151
|
exports.diffStats = diffStats;
|
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 DiffFile, e as DiffHunk, f as DiffLine, g as DiffResult, h as DiffType, i as DiffViewerLine, E as EMOJI_TABLE, j as ESCAPE_MODES, k as EmojiEntry, l as EscapeMode, F as FillerCategory, m as FillerMatch, n as FillerWordResult, K as KeywordDensityEntry, o as KeywordDensityOptions, p as KeywordDensityResult, L as LINE_OPS, q as LineOp, r as LineType, s as LoremUnit, M as MORSE_CODE, u as MarkdownResult, v as MorseOptions, P as ParsedDiff,
|
|
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 DiffFile, e as DiffHunk, f as DiffLine, g as DiffResult, h as DiffType, i as DiffViewerLine, E as EMOJI_TABLE, j as ESCAPE_MODES, k as EmojiEntry, l as EscapeMode, F as FillerCategory, m as FillerMatch, n as FillerWordResult, K as KeywordDensityEntry, o as KeywordDensityOptions, p as KeywordDensityResult, L as LINE_OPS, q as LineOp, r as LineType, s as LoremUnit, M as MORSE_CODE, u as MarkdownResult, v as MorseOptions, O as OxfordCommaInstance, w as OxfordCommaResult, P as ParsedDiff, x as ParsedTable, y as PassiveVoiceMatch, z as PassiveVoiceResult, B as PassiveVoiceSentence, R as ReadabilityResult, G as ReadabilityScore, S as SentenceLengthBucket, H as SentenceLengthDistribution, I as SlugSeparator, J as StringDistanceMode, N as StringDistanceResult, T as TableOptions, Q as TextAnalysis, W as WordCountResult, U as WordyPhraseMatch, V as WordyPhraseResult, X as addBorder, Y as analyzeKeywordDensity, Z as analyzeSentenceLengths, _ as analyzeText, $ as applyOp, a0 as applyOps, a1 as calculateStringDistance, a2 as centerText, a3 as checkOxfordCommaConsistency, a4 as convertAll, a5 as convertCase, a6 as countWords, a7 as csvToHtml, a8 as csvToMarkdown, a9 as detectDelimiter, aa as detectFillerWords, ab as detectPassiveVoice, ac as detectWordyPhrases, ad as diffLines, ae as diffLinesSimple, af as diffStats, ag as escapeAll, ah as escapeString, ai as extractHeadings, aj as formatReadingTime, ak as generate, al as generateDiff, am as generateHtmlTable, an as generateMarkdownTable, ao as generateParagraphs, ap as generateSentences, aq as generateWords, ar as getAvailableFonts, as as getEmojiByCategory, at as getEmojiByChar, au as getEmojiByShortcode, av as getEmojiCategories, aw as getMorseForChar, ax as getMorseTiming, ay as htmlToMarkdown, az as isValidMorse, aA as markdownToHtml, aB as morseToText, aC as numberToOrdinal, aD as numberToRoman, aE as numberToWords, aF as ordinalWords, aG as parseDiff, aH as parseTableData, aI as readabilityScore, aJ as renderMarkdown, aK as romanToNumber, aL as scoreReadability, aM as searchEmoji, aN as sentenceCount, aO as slugify, aP as slugifyAll, aQ as syllableCount, aR as textToAscii, aS as textToMorse, aT as unescapeString, aU as wordFrequency } from '../text-CNn3whZA.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 DiffFile, e as DiffHunk, f as DiffLine, g as DiffResult, h as DiffType, i as DiffViewerLine, E as EMOJI_TABLE, j as ESCAPE_MODES, k as EmojiEntry, l as EscapeMode, F as FillerCategory, m as FillerMatch, n as FillerWordResult, K as KeywordDensityEntry, o as KeywordDensityOptions, p as KeywordDensityResult, L as LINE_OPS, q as LineOp, r as LineType, s as LoremUnit, M as MORSE_CODE, u as MarkdownResult, v as MorseOptions, P as ParsedDiff,
|
|
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 DiffFile, e as DiffHunk, f as DiffLine, g as DiffResult, h as DiffType, i as DiffViewerLine, E as EMOJI_TABLE, j as ESCAPE_MODES, k as EmojiEntry, l as EscapeMode, F as FillerCategory, m as FillerMatch, n as FillerWordResult, K as KeywordDensityEntry, o as KeywordDensityOptions, p as KeywordDensityResult, L as LINE_OPS, q as LineOp, r as LineType, s as LoremUnit, M as MORSE_CODE, u as MarkdownResult, v as MorseOptions, O as OxfordCommaInstance, w as OxfordCommaResult, P as ParsedDiff, x as ParsedTable, y as PassiveVoiceMatch, z as PassiveVoiceResult, B as PassiveVoiceSentence, R as ReadabilityResult, G as ReadabilityScore, S as SentenceLengthBucket, H as SentenceLengthDistribution, I as SlugSeparator, J as StringDistanceMode, N as StringDistanceResult, T as TableOptions, Q as TextAnalysis, W as WordCountResult, U as WordyPhraseMatch, V as WordyPhraseResult, X as addBorder, Y as analyzeKeywordDensity, Z as analyzeSentenceLengths, _ as analyzeText, $ as applyOp, a0 as applyOps, a1 as calculateStringDistance, a2 as centerText, a3 as checkOxfordCommaConsistency, a4 as convertAll, a5 as convertCase, a6 as countWords, a7 as csvToHtml, a8 as csvToMarkdown, a9 as detectDelimiter, aa as detectFillerWords, ab as detectPassiveVoice, ac as detectWordyPhrases, ad as diffLines, ae as diffLinesSimple, af as diffStats, ag as escapeAll, ah as escapeString, ai as extractHeadings, aj as formatReadingTime, ak as generate, al as generateDiff, am as generateHtmlTable, an as generateMarkdownTable, ao as generateParagraphs, ap as generateSentences, aq as generateWords, ar as getAvailableFonts, as as getEmojiByCategory, at as getEmojiByChar, au as getEmojiByShortcode, av as getEmojiCategories, aw as getMorseForChar, ax as getMorseTiming, ay as htmlToMarkdown, az as isValidMorse, aA as markdownToHtml, aB as morseToText, aC as numberToOrdinal, aD as numberToRoman, aE as numberToWords, aF as ordinalWords, aG as parseDiff, aH as parseTableData, aI as readabilityScore, aJ as renderMarkdown, aK as romanToNumber, aL as scoreReadability, aM as searchEmoji, aN as sentenceCount, aO as slugify, aP as slugifyAll, aQ as syllableCount, aR as textToAscii, aS as textToMorse, aT as unescapeString, aU as wordFrequency } from '../text-CNn3whZA.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, convertAll, convertCase, countWords, csvToHtml, csvToMarkdown, detectDelimiter, detectFillerWords, detectPassiveVoice, 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, 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-QVOK3BXM.js';
|
|
2
2
|
import '../chunk-MLKGABMK.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@utilix-tech/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.77.0",
|
|
4
4
|
"description": "154+ developer utility tools for Node.js: JSON, encoding, hashing, color, CSS, network and more. Runs locally, no API key required.",
|
|
5
5
|
"author": "Utilix <hello@utilix.tech>",
|
|
6
6
|
"license": "MIT",
|