@utilix-tech/sdk 0.3.0 → 0.4.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.
Files changed (40) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +44 -32
  3. package/SECURITY.md +16 -0
  4. package/dist/{chunk-UC656APA.js → chunk-DNCOIO5N.js} +64 -1
  5. package/dist/{chunk-OKSWDVOM.js → chunk-GX7H6TAX.js} +1 -1
  6. package/dist/{chunk-W4UBLYFU.js → chunk-HFRTZE7T.js} +2 -2
  7. package/dist/{chunk-ROTPLW7T.js → chunk-IPR7FSX4.js} +2 -2
  8. package/dist/{chunk-T3JTY2M5.js → chunk-N7C52YGL.js} +1 -1
  9. package/dist/{chunk-XST6X3HT.js → chunk-QJE743LY.js} +10 -10
  10. package/dist/{chunk-3BAHSW4C.js → chunk-V5JKVDBA.js} +60 -1
  11. package/dist/{chunk-NSOARQCM.js → chunk-V5S6OJ4A.js} +14 -14
  12. package/dist/{data-rMjWNiOJ.d.cts → data-CakDxAcT.d.cts} +36 -2
  13. package/dist/{data-rMjWNiOJ.d.ts → data-CakDxAcT.d.ts} +36 -2
  14. package/dist/index.cjs +152 -30
  15. package/dist/index.d.cts +2 -2
  16. package/dist/index.d.ts +2 -2
  17. package/dist/index.js +8 -8
  18. package/dist/{network-CNtmrDeN.d.cts → network-DwyAjwJS.d.cts} +39 -2
  19. package/dist/{network-CNtmrDeN.d.ts → network-DwyAjwJS.d.ts} +39 -2
  20. package/dist/tools/api.cjs +2 -2
  21. package/dist/tools/api.js +1 -1
  22. package/dist/tools/code.cjs +14 -14
  23. package/dist/tools/code.js +1 -1
  24. package/dist/tools/data.cjs +63 -0
  25. package/dist/tools/data.d.cts +1 -1
  26. package/dist/tools/data.d.ts +1 -1
  27. package/dist/tools/data.js +1 -1
  28. package/dist/tools/encoding.cjs +2 -2
  29. package/dist/tools/encoding.js +1 -1
  30. package/dist/tools/media.cjs +1 -1
  31. package/dist/tools/media.js +1 -1
  32. package/dist/tools/misc.cjs +1 -1
  33. package/dist/tools/misc.js +1 -1
  34. package/dist/tools/network.cjs +59 -0
  35. package/dist/tools/network.d.cts +1 -1
  36. package/dist/tools/network.d.ts +1 -1
  37. package/dist/tools/network.js +1 -1
  38. package/dist/tools/units.cjs +10 -10
  39. package/dist/tools/units.js +1 -1
  40. package/package.json +18 -4
@@ -7,6 +7,7 @@
7
7
  * - ip-geolocation: IP address geolocation via ip-api.com
8
8
  * - http-status : HTTP status code lookup and search
9
9
  * - http-headers : HTTP header reference lookup and validation
10
+ * - har-viewer : parseHar
10
11
  */
11
12
  declare const DNS_RECORD_TYPES: readonly ["A", "AAAA", "CNAME", "MX", "TXT", "NS", "SOA", "PTR", "SRV", "CAA"];
12
13
  type DnsRecordType = typeof DNS_RECORD_TYPES[number];
@@ -124,6 +125,38 @@ declare function validateHeaderValue(name: string, value: string): {
124
125
  valid: boolean;
125
126
  warning?: string;
126
127
  };
128
+ interface HarEntry {
129
+ method: string;
130
+ url: string;
131
+ status: number;
132
+ statusText: string;
133
+ httpVersion: string;
134
+ mimeType: string;
135
+ size: number;
136
+ time: number;
137
+ startedDateTime: string;
138
+ }
139
+ interface HarSummary {
140
+ totalRequests: number;
141
+ totalSize: number;
142
+ totalTime: number;
143
+ avgTime: number;
144
+ failedRequests: number;
145
+ methods: Record<string, number>;
146
+ statusCodes: Record<string, number>;
147
+ }
148
+ interface HarParseResult {
149
+ version: string;
150
+ creator: {
151
+ name: string;
152
+ version: string;
153
+ };
154
+ entries: HarEntry[];
155
+ summary: HarSummary;
156
+ }
157
+ declare function parseHar(input: string): HarParseResult | {
158
+ error: string;
159
+ };
127
160
 
128
161
  declare const network_DNS_RECORD_TYPES: typeof DNS_RECORD_TYPES;
129
162
  type network_DnsRecord = DnsRecord;
@@ -131,6 +164,9 @@ type network_DnsRecordType = DnsRecordType;
131
164
  type network_DnsResponse = DnsResponse;
132
165
  type network_GeoResult = GeoResult;
133
166
  declare const network_HTTP_HEADERS: typeof HTTP_HEADERS;
167
+ type network_HarEntry = HarEntry;
168
+ type network_HarParseResult = HarParseResult;
169
+ type network_HarSummary = HarSummary;
134
170
  type network_HeaderCategory = HeaderCategory;
135
171
  type network_HttpHeader = HttpHeader;
136
172
  type network_ParsedDnsResult = ParsedDnsResult;
@@ -156,6 +192,7 @@ declare const network_isValidIpv4: typeof isValidIpv4;
156
192
  declare const network_isValidIpv6: typeof isValidIpv6;
157
193
  declare const network_parseDnsResponse: typeof parseDnsResponse;
158
194
  declare const network_parseGeoResponse: typeof parseGeoResponse;
195
+ declare const network_parseHar: typeof parseHar;
159
196
  declare const network_searchHeaders: typeof searchHeaders;
160
197
  declare const network_searchStatusCodes: typeof searchStatusCodes;
161
198
  declare const network_statusCodeToText: typeof statusCodeToText;
@@ -164,7 +201,7 @@ declare const network_validateDomain: typeof validateDomain;
164
201
  declare const network_validateHeaderName: typeof validateHeaderName;
165
202
  declare const network_validateHeaderValue: typeof validateHeaderValue;
166
203
  declare namespace network {
167
- export { network_DNS_RECORD_TYPES as DNS_RECORD_TYPES, type network_DnsRecord as DnsRecord, type network_DnsRecordType as DnsRecordType, type network_DnsResponse as DnsResponse, type network_GeoResult as GeoResult, network_HTTP_HEADERS as HTTP_HEADERS, type network_HeaderCategory as HeaderCategory, type network_HttpHeader as HttpHeader, type network_ParsedDnsResult as ParsedDnsResult, type network_ParsedGeoResult as ParsedGeoResult, network_STATUS_CODES as STATUS_CODES, type network_StatusCode as StatusCode, network_buildDnsQueryUrl as buildDnsQueryUrl, network_buildGeoUrl as buildGeoUrl, network_buildMapUrl as buildMapUrl, network_countryCodeToFlag as countryCodeToFlag, network_formatCoordinates as formatCoordinates, network_formatTtl as formatTtl, network_getByCategory as getByCategory, network_getHeader as getHeader, network_getHeadersByCategory as getHeadersByCategory, network_getStatusByCategory as getStatusByCategory, network_getStatusCode as getStatusCode, network_isClientError as isClientError, network_isServerError as isServerError, network_isSuccess as isSuccess, network_isValidIp as isValidIp, network_isValidIpv4 as isValidIpv4, network_isValidIpv6 as isValidIpv6, network_parseDnsResponse as parseDnsResponse, network_parseGeoResponse as parseGeoResponse, network_searchHeaders as searchHeaders, network_searchStatusCodes as searchStatusCodes, network_statusCodeToText as statusCodeToText, network_typeNumberToLabel as typeNumberToLabel, network_validateDomain as validateDomain, network_validateHeaderName as validateHeaderName, network_validateHeaderValue as validateHeaderValue };
204
+ export { network_DNS_RECORD_TYPES as DNS_RECORD_TYPES, type network_DnsRecord as DnsRecord, type network_DnsRecordType as DnsRecordType, type network_DnsResponse as DnsResponse, type network_GeoResult as GeoResult, network_HTTP_HEADERS as HTTP_HEADERS, type network_HarEntry as HarEntry, type network_HarParseResult as HarParseResult, type network_HarSummary as HarSummary, type network_HeaderCategory as HeaderCategory, type network_HttpHeader as HttpHeader, type network_ParsedDnsResult as ParsedDnsResult, type network_ParsedGeoResult as ParsedGeoResult, network_STATUS_CODES as STATUS_CODES, type network_StatusCode as StatusCode, network_buildDnsQueryUrl as buildDnsQueryUrl, network_buildGeoUrl as buildGeoUrl, network_buildMapUrl as buildMapUrl, network_countryCodeToFlag as countryCodeToFlag, network_formatCoordinates as formatCoordinates, network_formatTtl as formatTtl, network_getByCategory as getByCategory, network_getHeader as getHeader, network_getHeadersByCategory as getHeadersByCategory, network_getStatusByCategory as getStatusByCategory, network_getStatusCode as getStatusCode, network_isClientError as isClientError, network_isServerError as isServerError, network_isSuccess as isSuccess, network_isValidIp as isValidIp, network_isValidIpv4 as isValidIpv4, network_isValidIpv6 as isValidIpv6, network_parseDnsResponse as parseDnsResponse, network_parseGeoResponse as parseGeoResponse, network_parseHar as parseHar, network_searchHeaders as searchHeaders, network_searchStatusCodes as searchStatusCodes, network_statusCodeToText as statusCodeToText, network_typeNumberToLabel as typeNumberToLabel, network_validateDomain as validateDomain, network_validateHeaderName as validateHeaderName, network_validateHeaderValue as validateHeaderValue };
168
205
  }
169
206
 
170
- export { parseGeoResponse as A, searchHeaders as B, searchStatusCodes as C, DNS_RECORD_TYPES as D, statusCodeToText as E, typeNumberToLabel as F, type GeoResult as G, HTTP_HEADERS as H, validateDomain as I, validateHeaderName as J, validateHeaderValue as K, type ParsedDnsResult as P, STATUS_CODES as S, type DnsRecord as a, type DnsRecordType as b, type DnsResponse as c, type HeaderCategory as d, type HttpHeader as e, type ParsedGeoResult as f, type StatusCode as g, buildDnsQueryUrl as h, buildGeoUrl as i, buildMapUrl as j, countryCodeToFlag as k, formatCoordinates as l, formatTtl as m, network as n, getByCategory as o, getHeader as p, getHeadersByCategory as q, getStatusByCategory as r, getStatusCode as s, isClientError as t, isServerError as u, isSuccess as v, isValidIp as w, isValidIpv4 as x, isValidIpv6 as y, parseDnsResponse as z };
207
+ export { isValidIpv4 as A, isValidIpv6 as B, parseDnsResponse as C, DNS_RECORD_TYPES as D, parseGeoResponse as E, parseHar as F, type GeoResult as G, HTTP_HEADERS as H, searchHeaders as I, searchStatusCodes as J, statusCodeToText as K, typeNumberToLabel as L, validateDomain as M, validateHeaderName as N, validateHeaderValue as O, type ParsedDnsResult as P, STATUS_CODES as S, type DnsRecord as a, type DnsRecordType as b, type DnsResponse as c, type HarEntry as d, type HarParseResult as e, type HarSummary as f, type HeaderCategory as g, type HttpHeader as h, type ParsedGeoResult as i, type StatusCode as j, buildDnsQueryUrl as k, buildGeoUrl as l, buildMapUrl as m, network as n, countryCodeToFlag as o, formatCoordinates as p, formatTtl as q, getByCategory as r, getHeader as s, getHeadersByCategory as t, getStatusByCategory as u, getStatusCode as v, isClientError as w, isServerError as x, isSuccess as y, isValidIp as z };
@@ -410,13 +410,13 @@ function decodeJwt(token) {
410
410
  try {
411
411
  header = decodeSegment(rawHeader);
412
412
  } catch {
413
- return { ok: false, error: "Failed to decode header \u2014 not valid base64url JSON" };
413
+ return { ok: false, error: "Failed to decode header: not valid base64url JSON" };
414
414
  }
415
415
  let payload;
416
416
  try {
417
417
  payload = decodeSegment(rawPayload);
418
418
  } catch {
419
- return { ok: false, error: "Failed to decode payload \u2014 not valid base64url JSON" };
419
+ return { ok: false, error: "Failed to decode payload: not valid base64url JSON" };
420
420
  }
421
421
  const algorithm = typeof header.alg === "string" ? header.alg : "unknown";
422
422
  const now = Math.floor(Date.now() / 1e3);
package/dist/tools/api.js CHANGED
@@ -1,2 +1,2 @@
1
- export { COMMON_HEADERS, COMMON_PRESETS, CORS_COMMON_HEADERS, DEFAULT_CORS_CONFIG, DIRECTIVE_DESCRIPTIONS, HTTP_METHODS, SUPPORTED_LANGUAGES, addParam, base64urlDecode, base64urlEncode, buildCurl, buildCurlMultiline, buildUrl, convertToCode, decodeJwt, decodeUrlComponent, detectFormat, encodeUrlComponent, extractJsonPaths, formatJwtJson, formatResponse, generateCors, generateCspHeader, generateFullHeader, generateMetaHtml, getParam, getStats, isValidUrl, normalizeUrl, parseCspHeader, parseCurl, parseCurlCommand, parseMetaTags, parseUrl, removeParam, signJwt, validateCorsConfig, validateCspConfig, validateOgTags } from '../chunk-W4UBLYFU.js';
1
+ export { COMMON_HEADERS, COMMON_PRESETS, CORS_COMMON_HEADERS, DEFAULT_CORS_CONFIG, DIRECTIVE_DESCRIPTIONS, HTTP_METHODS, SUPPORTED_LANGUAGES, addParam, base64urlDecode, base64urlEncode, buildCurl, buildCurlMultiline, buildUrl, convertToCode, decodeJwt, decodeUrlComponent, detectFormat, encodeUrlComponent, extractJsonPaths, formatJwtJson, formatResponse, generateCors, generateCspHeader, generateFullHeader, generateMetaHtml, getParam, getStats, isValidUrl, normalizeUrl, parseCspHeader, parseCurl, parseCurlCommand, parseMetaTags, parseUrl, removeParam, signJwt, validateCorsConfig, validateCspConfig, validateOgTags } from '../chunk-HFRTZE7T.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -87,24 +87,24 @@ var CHEATSHEET = [
87
87
  { pattern: "{n}", description: "Matches exactly n repetitions", example: "\\d{3} matches exactly 3 digits", category: "Quantifiers" },
88
88
  { pattern: "{n,}", description: "Matches n or more repetitions", example: "\\d{2,} matches 2 or more digits", category: "Quantifiers" },
89
89
  { pattern: "{n,m}", description: "Matches between n and m repetitions", example: "\\d{2,4} matches 2 to 4 digits", category: "Quantifiers" },
90
- { pattern: "*?", description: "Lazy match \u2014 matches as few characters as possible", example: "<.*?> matches the shortest possible HTML tag", category: "Quantifiers" },
90
+ { pattern: "*?", description: "Lazy match: matches as few characters as possible", example: "<.*?> matches the shortest possible HTML tag", category: "Quantifiers" },
91
91
  { pattern: "+?", description: "Lazy version of +", example: "a+? matches as few 'a's as possible", category: "Quantifiers" },
92
- { pattern: "(abc)", description: "Capturing group \u2014 captures the matched substring", example: "(\\d+) captures digit sequences", category: "Groups" },
93
- { pattern: "(?:abc)", description: "Non-capturing group \u2014 groups without capturing", example: "(?:foo|bar)baz matches 'foobaz' or 'barbaz'", category: "Groups" },
92
+ { pattern: "(abc)", description: "Capturing group: captures the matched substring", example: "(\\d+) captures digit sequences", category: "Groups" },
93
+ { pattern: "(?:abc)", description: "Non-capturing group: groups without capturing", example: "(?:foo|bar)baz matches 'foobaz' or 'barbaz'", category: "Groups" },
94
94
  { pattern: "(?<name>abc)", description: "Named capturing group", example: "(?<year>\\d{4}) captures year by name", category: "Groups" },
95
- { pattern: "a|b", description: "Alternation \u2014 matches either a or b", example: "cat|dog matches 'cat' or 'dog'", category: "Groups" },
95
+ { pattern: "a|b", description: "Alternation: matches either a or b", example: "cat|dog matches 'cat' or 'dog'", category: "Groups" },
96
96
  { pattern: "\\1", description: "Backreference to the first capturing group", example: "(\\w+) \\1 matches repeated words like 'the the'", category: "Groups" },
97
97
  { pattern: "\\k<name>", description: "Backreference to a named capturing group", example: "(?<word>\\w+) \\k<word> matches repeated named group", category: "Groups" },
98
- { pattern: "(?=abc)", description: "Positive lookahead \u2014 asserts what follows matches", example: "\\d+(?= dollars) matches digits followed by ' dollars'", category: "Lookahead/Lookbehind" },
99
- { pattern: "(?!abc)", description: "Negative lookahead \u2014 asserts what follows does not match", example: "\\d+(?! dollars) matches digits not followed by ' dollars'", category: "Lookahead/Lookbehind" },
100
- { pattern: "(?<=abc)", description: "Positive lookbehind \u2014 asserts what precedes matches", example: "(?<=\\$)\\d+ matches digits preceded by '$'", category: "Lookahead/Lookbehind" },
101
- { pattern: "(?<!abc)", description: "Negative lookbehind \u2014 asserts what precedes does not match", example: "(?<!\\$)\\d+ matches digits not preceded by '$'", category: "Lookahead/Lookbehind" },
102
- { pattern: "g", description: "Global flag \u2014 finds all matches rather than stopping at the first", example: "/\\d+/g finds all numbers in a string", category: "Flags" },
103
- { pattern: "i", description: "Case-insensitive flag \u2014 ignores letter case", example: "/hello/i matches 'Hello', 'HELLO', 'hello'", category: "Flags" },
104
- { pattern: "m", description: "Multiline flag \u2014 ^ and $ match start/end of each line", example: "/^\\w+/m matches the first word of each line", category: "Flags" },
105
- { pattern: "s", description: "Dotall flag \u2014 makes . match newline characters too", example: "/a.b/s matches 'a\\nb'", category: "Flags" },
106
- { pattern: "u", description: "Unicode flag \u2014 enables full Unicode matching", example: "/\\u{1F600}/u matches a Unicode emoji", category: "Flags" },
107
- { pattern: "y", description: "Sticky flag \u2014 matches only from the lastIndex position", example: "/\\d+/y matches digits starting at the current position", category: "Flags" },
98
+ { pattern: "(?=abc)", description: "Positive lookahead: asserts what follows matches", example: "\\d+(?= dollars) matches digits followed by ' dollars'", category: "Lookahead/Lookbehind" },
99
+ { pattern: "(?!abc)", description: "Negative lookahead: asserts what follows does not match", example: "\\d+(?! dollars) matches digits not followed by ' dollars'", category: "Lookahead/Lookbehind" },
100
+ { pattern: "(?<=abc)", description: "Positive lookbehind: asserts what precedes matches", example: "(?<=\\$)\\d+ matches digits preceded by '$'", category: "Lookahead/Lookbehind" },
101
+ { pattern: "(?<!abc)", description: "Negative lookbehind: asserts what precedes does not match", example: "(?<!\\$)\\d+ matches digits not preceded by '$'", category: "Lookahead/Lookbehind" },
102
+ { pattern: "g", description: "Global flag: finds all matches rather than stopping at the first", example: "/\\d+/g finds all numbers in a string", category: "Flags" },
103
+ { pattern: "i", description: "Case-insensitive flag: ignores letter case", example: "/hello/i matches 'Hello', 'HELLO', 'hello'", category: "Flags" },
104
+ { pattern: "m", description: "Multiline flag: ^ and $ match start/end of each line", example: "/^\\w+/m matches the first word of each line", category: "Flags" },
105
+ { pattern: "s", description: "Dotall flag: makes . match newline characters too", example: "/a.b/s matches 'a\\nb'", category: "Flags" },
106
+ { pattern: "u", description: "Unicode flag: enables full Unicode matching", example: "/\\u{1F600}/u matches a Unicode emoji", category: "Flags" },
107
+ { pattern: "y", description: "Sticky flag: matches only from the lastIndex position", example: "/\\d+/y matches digits starting at the current position", category: "Flags" },
108
108
  { pattern: "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}", description: "Matches a basic email address", example: "user@example.com", category: "Common Patterns" },
109
109
  { pattern: "https?://[\\w\\-]+(\\.[\\w\\-]+)+([\\w.,@?^=%&:/~+#\\-]*[\\w@?^=%&/~+#\\-])?", description: "Matches an HTTP or HTTPS URL", example: "https://www.example.com/path?query=value", category: "Common Patterns" },
110
110
  { pattern: "^(?:\\+1)?[-.\\s]?\\(?\\d{3}\\)?[-.\\s]?\\d{3}[-.\\s]?\\d{4}$", description: "Matches a North American phone number in various formats", example: "(555) 123-4567 or 555-123-4567", category: "Common Patterns" },
@@ -1,2 +1,2 @@
1
- export { ALL_FLAGS, CHEATSHEET, OPERATIONS, SQL_DEFAULT_OPTIONS, buildDockerPull, buildDockerRun, buildGitCommand, collapseHtmlWhitespace, collapseJsWhitespace, countProperties, countRules, detectDialect, detectOperationType, envToExport, envToJson, formatCss, formatGql, formatHtml, formatSql, getEndpointsByTag, getHtmlStats, getJsStats, getMethodColor, isValidTag, minifyCss, minifyGql, minifyHtml, minifyJs, minifySql, normalizeRef, parseDockerImage, parseEnv, parseGitCommand, parseSpec, removeConsoleCalls, removeEmptyAttributes, removeHtmlComments, removeJsComments, removeRedundantAttributes, searchCheatsheet, searchEndpoints, splitStatements, testPattern, testRegex, validateEnvKey } from '../chunk-NSOARQCM.js';
1
+ export { ALL_FLAGS, CHEATSHEET, OPERATIONS, SQL_DEFAULT_OPTIONS, buildDockerPull, buildDockerRun, buildGitCommand, collapseHtmlWhitespace, collapseJsWhitespace, countProperties, countRules, detectDialect, detectOperationType, envToExport, envToJson, formatCss, formatGql, formatHtml, formatSql, getEndpointsByTag, getHtmlStats, getJsStats, getMethodColor, isValidTag, minifyCss, minifyGql, minifyHtml, minifyJs, minifySql, normalizeRef, parseDockerImage, parseEnv, parseGitCommand, parseSpec, removeConsoleCalls, removeEmptyAttributes, removeHtmlComments, removeJsComments, removeRedundantAttributes, searchCheatsheet, searchEndpoints, splitStatements, testPattern, testRegex, validateEnvKey } from '../chunk-V5S6OJ4A.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -1064,11 +1064,70 @@ function envToExport(input) {
1064
1064
  function validateEnvKey(key) {
1065
1065
  return /^[A-Za-z_][A-Za-z0-9_]*$/.test(key);
1066
1066
  }
1067
+ function validateNdjson(input) {
1068
+ const rawLines = input.split("\n");
1069
+ const lines = [];
1070
+ let validCount = 0;
1071
+ rawLines.forEach((raw, idx) => {
1072
+ if (raw.trim() === "") return;
1073
+ const lineNum = idx + 1;
1074
+ try {
1075
+ JSON.parse(raw);
1076
+ lines.push({ line: lineNum, raw, valid: true });
1077
+ validCount++;
1078
+ } catch (e) {
1079
+ lines.push({
1080
+ line: lineNum,
1081
+ raw,
1082
+ valid: false,
1083
+ error: e instanceof Error ? e.message : String(e)
1084
+ });
1085
+ }
1086
+ });
1087
+ return {
1088
+ valid: lines.length > 0 && validCount === lines.length,
1089
+ totalLines: lines.length,
1090
+ validLines: validCount,
1091
+ invalidLines: lines.length - validCount,
1092
+ lines
1093
+ };
1094
+ }
1095
+ function _firstNdjsonError(result) {
1096
+ const firstError = result.lines.find((l) => !l.valid);
1097
+ return firstError ? `Line ${firstError.line}: ${firstError.error}` : "Invalid NDJSON";
1098
+ }
1099
+ function minifyNdjson(input) {
1100
+ const result = validateNdjson(input);
1101
+ if (!result.valid) return { error: _firstNdjsonError(result) };
1102
+ return result.lines.map((l) => JSON.stringify(JSON.parse(l.raw))).join("\n");
1103
+ }
1104
+ function formatNdjson(input, indent = 2) {
1105
+ const result = validateNdjson(input);
1106
+ if (!result.valid) return { error: _firstNdjsonError(result) };
1107
+ return result.lines.map((l) => JSON.stringify(JSON.parse(l.raw), null, indent)).join("\n");
1108
+ }
1109
+ function ndjsonToJsonArray(input) {
1110
+ const result = validateNdjson(input);
1111
+ if (!result.valid) return { error: _firstNdjsonError(result) };
1112
+ const values = result.lines.map((l) => JSON.parse(l.raw));
1113
+ return JSON.stringify(values, null, 2);
1114
+ }
1115
+ function jsonArrayToNdjson(input) {
1116
+ let parsed;
1117
+ try {
1118
+ parsed = JSON.parse(input);
1119
+ } catch (e) {
1120
+ return { error: `Invalid JSON: ${e instanceof Error ? e.message : String(e)}` };
1121
+ }
1122
+ if (!Array.isArray(parsed)) return { error: "Input must be a JSON array" };
1123
+ return parsed.map((item) => JSON.stringify(item)).join("\n");
1124
+ }
1067
1125
 
1068
1126
  exports.csvToJson = csvToJson;
1069
1127
  exports.detectDelimiter = detectDelimiter;
1070
1128
  exports.envToExport = envToExport;
1071
1129
  exports.envToJson = envToJson;
1130
+ exports.formatNdjson = formatNdjson;
1072
1131
  exports.formatToml = formatToml;
1073
1132
  exports.formatXml = formatXml;
1074
1133
  exports.getSection = getSection;
@@ -1077,11 +1136,14 @@ exports.getTomlStats = getTomlStats;
1077
1136
  exports.getXmlStats = getXmlStats;
1078
1137
  exports.getYamlStats = getYamlStats;
1079
1138
  exports.iniToJson = iniToJson;
1139
+ exports.jsonArrayToNdjson = jsonArrayToNdjson;
1080
1140
  exports.jsonToIni = jsonToIni;
1081
1141
  exports.jsonToToml = jsonToToml;
1082
1142
  exports.jsonToXml = jsonToXml;
1143
+ exports.minifyNdjson = minifyNdjson;
1083
1144
  exports.minifyToml = minifyToml;
1084
1145
  exports.minifyXml = minifyXml;
1146
+ exports.ndjsonToJsonArray = ndjsonToJsonArray;
1085
1147
  exports.parseCsv = parseCsv;
1086
1148
  exports.parseEnv = parseEnv;
1087
1149
  exports.parseIni = parseIni;
@@ -1091,6 +1153,7 @@ exports.toCsvString = toCsvString;
1091
1153
  exports.tomlToJson = tomlToJson;
1092
1154
  exports.validateEnvKey = validateEnvKey;
1093
1155
  exports.validateIni = validateIni;
1156
+ exports.validateNdjson = validateNdjson;
1094
1157
  exports.validateToml = validateToml;
1095
1158
  exports.validateXml = validateXml;
1096
1159
  exports.validateYaml = validateYaml;
@@ -1 +1 @@
1
- export { C as CsvParseResult, E as EnvEntry, a as EnvParseResult, I as IniSection, P as ParseOptions, b as ParsedIni, T as TomlFormatResult, V as ValidationResult, X as XmlFormatResult, c as XmlToJsonOptions, e as csvToJson, f as detectDelimiter, g as envToExport, h as envToJson, i as formatToml, j as formatXml, k as getSection, l as getSectionNames, m as getTomlStats, n as getXmlStats, o as getYamlStats, p as iniToJson, q as jsonToIni, r as jsonToToml, s as jsonToXml, t as minifyToml, u as minifyXml, v as parseCsv, w as parseEnv, x as parseIni, y as parseXmlToObject, z as stringifyIni, A as toCsvString, B as tomlToJson, D as validateEnvKey, F as validateIni, G as validateToml, H as validateXml, J as validateYaml, K as xmlToJson } from '../data-rMjWNiOJ.cjs';
1
+ export { C as CsvParseResult, E as EnvEntry, a as EnvParseResult, I as IniSection, N as NdjsonLineResult, b as NdjsonValidateResult, P as ParseOptions, c as ParsedIni, T as TomlFormatResult, V as ValidationResult, X as XmlFormatResult, e as XmlToJsonOptions, f as csvToJson, g as detectDelimiter, h as envToExport, i as envToJson, j as formatNdjson, k as formatToml, l as formatXml, m as getSection, n as getSectionNames, o as getTomlStats, p as getXmlStats, q as getYamlStats, r as iniToJson, s as jsonArrayToNdjson, t as jsonToIni, u as jsonToToml, v as jsonToXml, w as minifyNdjson, x as minifyToml, y as minifyXml, z as ndjsonToJsonArray, A as parseCsv, B as parseEnv, D as parseIni, F as parseXmlToObject, G as stringifyIni, H as toCsvString, J as tomlToJson, K as validateEnvKey, L as validateIni, M as validateNdjson, O as validateToml, Q as validateXml, R as validateYaml, S as xmlToJson } from '../data-CakDxAcT.cjs';
@@ -1 +1 @@
1
- export { C as CsvParseResult, E as EnvEntry, a as EnvParseResult, I as IniSection, P as ParseOptions, b as ParsedIni, T as TomlFormatResult, V as ValidationResult, X as XmlFormatResult, c as XmlToJsonOptions, e as csvToJson, f as detectDelimiter, g as envToExport, h as envToJson, i as formatToml, j as formatXml, k as getSection, l as getSectionNames, m as getTomlStats, n as getXmlStats, o as getYamlStats, p as iniToJson, q as jsonToIni, r as jsonToToml, s as jsonToXml, t as minifyToml, u as minifyXml, v as parseCsv, w as parseEnv, x as parseIni, y as parseXmlToObject, z as stringifyIni, A as toCsvString, B as tomlToJson, D as validateEnvKey, F as validateIni, G as validateToml, H as validateXml, J as validateYaml, K as xmlToJson } from '../data-rMjWNiOJ.js';
1
+ export { C as CsvParseResult, E as EnvEntry, a as EnvParseResult, I as IniSection, N as NdjsonLineResult, b as NdjsonValidateResult, P as ParseOptions, c as ParsedIni, T as TomlFormatResult, V as ValidationResult, X as XmlFormatResult, e as XmlToJsonOptions, f as csvToJson, g as detectDelimiter, h as envToExport, i as envToJson, j as formatNdjson, k as formatToml, l as formatXml, m as getSection, n as getSectionNames, o as getTomlStats, p as getXmlStats, q as getYamlStats, r as iniToJson, s as jsonArrayToNdjson, t as jsonToIni, u as jsonToToml, v as jsonToXml, w as minifyNdjson, x as minifyToml, y as minifyXml, z as ndjsonToJsonArray, A as parseCsv, B as parseEnv, D as parseIni, F as parseXmlToObject, G as stringifyIni, H as toCsvString, J as tomlToJson, K as validateEnvKey, L as validateIni, M as validateNdjson, O as validateToml, Q as validateXml, R as validateYaml, S as xmlToJson } from '../data-CakDxAcT.js';
@@ -1,2 +1,2 @@
1
- export { csvToJson, detectDelimiter, envToExport, envToJson, formatToml, formatXml, getSection, getSectionNames, getTomlStats, getXmlStats, getYamlStats, iniToJson, jsonToIni, jsonToToml, jsonToXml, minifyToml, minifyXml, parseCsv, parseEnv, parseIni, parseXmlToObject, stringifyIni, toCsvString, tomlToJson, validateEnvKey, validateIni, validateToml, validateXml, validateYaml, xmlToJson } from '../chunk-UC656APA.js';
1
+ export { csvToJson, detectDelimiter, envToExport, envToJson, formatNdjson, formatToml, formatXml, getSection, getSectionNames, getTomlStats, getXmlStats, getYamlStats, iniToJson, jsonArrayToNdjson, jsonToIni, jsonToToml, jsonToXml, minifyNdjson, minifyToml, minifyXml, ndjsonToJsonArray, parseCsv, parseEnv, parseIni, parseXmlToObject, stringifyIni, toCsvString, tomlToJson, validateEnvKey, validateIni, validateNdjson, validateToml, validateXml, validateYaml, xmlToJson } from '../chunk-DNCOIO5N.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -28,7 +28,7 @@ function decodeBase64(input, variant = "standard") {
28
28
  const output = bytes.toString("utf8");
29
29
  return { ok: true, output, outputBytes: bytes.length };
30
30
  } catch {
31
- return { ok: false, error: "Invalid Base64 \u2014 check the input and variant setting" };
31
+ return { ok: false, error: "Invalid Base64: check the input and variant setting" };
32
32
  }
33
33
  }
34
34
  function encodeUrl(input, mode = "component") {
@@ -47,7 +47,7 @@ function decodeUrl(input, mode = "component") {
47
47
  const output = mode === "component" ? decodeURIComponent(trimmed) : decodeURI(trimmed);
48
48
  return { ok: true, output, changed: output !== trimmed };
49
49
  } catch {
50
- return { ok: false, error: "Invalid percent-encoding \u2014 check the input" };
50
+ return { ok: false, error: "Invalid percent-encoding: check the input" };
51
51
  }
52
52
  }
53
53
  function diffSegments(original, encoded) {
@@ -1,2 +1,2 @@
1
- export { ALPHABETS, base32Decode, base32DecodeBytes, base32Encode, base32EncodeBytes, decodeBase64, decodeHtmlEntities, decodeUrl, diffSegments, encodeBase64, encodeHtmlEntities, encodeHtmlEntitiesAll, encodeUrl, isValidBase32 } from '../chunk-ROTPLW7T.js';
1
+ export { ALPHABETS, base32Decode, base32DecodeBytes, base32Encode, base32EncodeBytes, decodeBase64, decodeHtmlEntities, decodeUrl, diffSegments, encodeBase64, encodeHtmlEntities, encodeHtmlEntitiesAll, encodeUrl, isValidBase32 } from '../chunk-IPR7FSX4.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -124,7 +124,7 @@ function readImageInfo(bytes) {
124
124
  if (bytes[0] === 255 && bytes[1] === 216) {
125
125
  return readJpeg(bytes);
126
126
  }
127
- return { error: "Unrecognized image format \u2014 supported: PNG, JPEG, GIF, WebP, BMP" };
127
+ return { error: "Unrecognized image format. Supported formats: PNG, JPEG, GIF, WebP, BMP" };
128
128
  }
129
129
 
130
130
  exports.readImageInfo = readImageInfo;
@@ -1,2 +1,2 @@
1
- export { readImageInfo } from '../chunk-T3JTY2M5.js';
1
+ export { readImageInfo } from '../chunk-N7C52YGL.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -531,7 +531,7 @@ function getConversionWarnings(from, to) {
531
531
  warnings.push("Transparency will be lost if the WebP image has an alpha channel");
532
532
  }
533
533
  if (to === "image/jpeg") {
534
- warnings.push("JPEG uses lossy compression \u2014 some quality may be reduced");
534
+ warnings.push("JPEG uses lossy compression: some quality may be reduced");
535
535
  }
536
536
  return warnings;
537
537
  }
@@ -1,2 +1,2 @@
1
- export { COLOR_PRESETS, DATA_TYPES, DEFAULT_CONFIG, DEFAULT_QR_OPTIONS, FORMAT_EXTENSIONS, FORMAT_LABELS, analyzeString, analyzeSvg, calcResizeDimensions, calcSavings, charToCodePoint, codePointToChar, detectFormatFromDataUrl, detectFormatFromFilename, formatBytes, formatLabel, formatSvg, fromUnicodeEscape, generateData, generateMetaHtml, generateQrDataUrl, generateQrSvg, generateSingle, generateSvgFavicon, getConversionWarnings, getDefaultQuality, getDownloadFilename, getSupportedFormats, getSupportedOutputFormats, minifySvg, numberToOrdinal, numberToRoman, numberToWords, optimizeSvg, ordinalWords, parseMetaTags, romanToNumber, sanitizeSvg, svgToDataUrl, toUnicodeEscape, validateOgTags } from '../chunk-OKSWDVOM.js';
1
+ export { COLOR_PRESETS, DATA_TYPES, DEFAULT_CONFIG, DEFAULT_QR_OPTIONS, FORMAT_EXTENSIONS, FORMAT_LABELS, analyzeString, analyzeSvg, calcResizeDimensions, calcSavings, charToCodePoint, codePointToChar, detectFormatFromDataUrl, detectFormatFromFilename, formatBytes, formatLabel, formatSvg, fromUnicodeEscape, generateData, generateMetaHtml, generateQrDataUrl, generateQrSvg, generateSingle, generateSvgFavicon, getConversionWarnings, getDefaultQuality, getDownloadFilename, getSupportedFormats, getSupportedOutputFormats, minifySvg, numberToOrdinal, numberToRoman, numberToWords, optimizeSvg, ordinalWords, parseMetaTags, romanToNumber, sanitizeSvg, svgToDataUrl, toUnicodeEscape, validateOgTags } from '../chunk-GX7H6TAX.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -1349,6 +1349,64 @@ function validateHeaderValue(name, value) {
1349
1349
  }
1350
1350
  return { valid: true };
1351
1351
  }
1352
+ function parseHar(input) {
1353
+ if (!input || !input.trim()) {
1354
+ return { error: "Input is empty" };
1355
+ }
1356
+ let data;
1357
+ try {
1358
+ data = JSON.parse(input);
1359
+ } catch (e) {
1360
+ return { error: `Invalid JSON: ${e instanceof Error ? e.message : String(e)}` };
1361
+ }
1362
+ if (typeof data !== "object" || data === null || !("log" in data)) {
1363
+ return { error: 'Not a valid HAR file: missing "log" property' };
1364
+ }
1365
+ const log = data.log;
1366
+ if (typeof log !== "object" || log === null || !Array.isArray(log.entries)) {
1367
+ return { error: 'Not a valid HAR file: "log.entries" must be an array' };
1368
+ }
1369
+ const logObj = log;
1370
+ const entries = [];
1371
+ const methods = {};
1372
+ const statusCodes = {};
1373
+ let totalSize = 0;
1374
+ let totalTime = 0;
1375
+ let failedRequests = 0;
1376
+ for (const raw of logObj.entries) {
1377
+ if (typeof raw !== "object" || raw === null) continue;
1378
+ const e = raw;
1379
+ const request = e.request ?? {};
1380
+ const response = e.response ?? {};
1381
+ const content = response.content ?? {};
1382
+ const method = typeof request.method === "string" ? request.method : "GET";
1383
+ const url = typeof request.url === "string" ? request.url : "";
1384
+ const status = typeof response.status === "number" ? response.status : 0;
1385
+ const statusText = typeof response.statusText === "string" ? response.statusText : "";
1386
+ const httpVersion = typeof response.httpVersion === "string" ? response.httpVersion : "";
1387
+ const mimeType = typeof content.mimeType === "string" ? content.mimeType : "";
1388
+ const size = typeof content.size === "number" && content.size > 0 ? content.size : 0;
1389
+ const time = typeof e.time === "number" ? e.time : 0;
1390
+ const startedDateTime = typeof e.startedDateTime === "string" ? e.startedDateTime : "";
1391
+ entries.push({ method, url, status, statusText, httpVersion, mimeType, size, time, startedDateTime });
1392
+ methods[method] = (methods[method] ?? 0) + 1;
1393
+ if (status > 0) statusCodes[String(status)] = (statusCodes[String(status)] ?? 0) + 1;
1394
+ totalSize += size;
1395
+ totalTime += time;
1396
+ if (status === 0 || status >= 400) failedRequests++;
1397
+ }
1398
+ const totalRequests = entries.length;
1399
+ const avgTime = totalRequests > 0 ? Math.round(totalTime / totalRequests * 100) / 100 : 0;
1400
+ return {
1401
+ version: typeof logObj.version === "string" ? logObj.version : "",
1402
+ creator: {
1403
+ name: typeof logObj.creator?.name === "string" ? logObj.creator.name : "",
1404
+ version: typeof logObj.creator?.version === "string" ? logObj.creator.version : ""
1405
+ },
1406
+ entries,
1407
+ summary: { totalRequests, totalSize, totalTime, avgTime, failedRequests, methods, statusCodes }
1408
+ };
1409
+ }
1352
1410
 
1353
1411
  exports.DNS_RECORD_TYPES = DNS_RECORD_TYPES;
1354
1412
  exports.HTTP_HEADERS = HTTP_HEADERS;
@@ -1372,6 +1430,7 @@ exports.isValidIpv4 = isValidIpv4;
1372
1430
  exports.isValidIpv6 = isValidIpv6;
1373
1431
  exports.parseDnsResponse = parseDnsResponse;
1374
1432
  exports.parseGeoResponse = parseGeoResponse;
1433
+ exports.parseHar = parseHar;
1375
1434
  exports.searchHeaders = searchHeaders;
1376
1435
  exports.searchStatusCodes = searchStatusCodes;
1377
1436
  exports.statusCodeToText = statusCodeToText;
@@ -1 +1 @@
1
- export { D as DNS_RECORD_TYPES, a as DnsRecord, b as DnsRecordType, c as DnsResponse, G as GeoResult, H as HTTP_HEADERS, d as HeaderCategory, e as HttpHeader, P as ParsedDnsResult, f as ParsedGeoResult, S as STATUS_CODES, g as StatusCode, h as buildDnsQueryUrl, i as buildGeoUrl, j as buildMapUrl, k as countryCodeToFlag, l as formatCoordinates, m as formatTtl, o as getByCategory, p as getHeader, q as getHeadersByCategory, r as getStatusByCategory, s as getStatusCode, t as isClientError, u as isServerError, v as isSuccess, w as isValidIp, x as isValidIpv4, y as isValidIpv6, z as parseDnsResponse, A as parseGeoResponse, B as searchHeaders, C as searchStatusCodes, E as statusCodeToText, F as typeNumberToLabel, I as validateDomain, J as validateHeaderName, K as validateHeaderValue } from '../network-CNtmrDeN.cjs';
1
+ export { D as DNS_RECORD_TYPES, a as DnsRecord, b as DnsRecordType, c as DnsResponse, G as GeoResult, H as HTTP_HEADERS, d as HarEntry, e as HarParseResult, f as HarSummary, g as HeaderCategory, h as HttpHeader, P as ParsedDnsResult, i as ParsedGeoResult, S as STATUS_CODES, j as StatusCode, k as buildDnsQueryUrl, l as buildGeoUrl, m as buildMapUrl, o as countryCodeToFlag, p as formatCoordinates, q as formatTtl, r as getByCategory, s as getHeader, t as getHeadersByCategory, u as getStatusByCategory, v as getStatusCode, w as isClientError, x as isServerError, y as isSuccess, z as isValidIp, A as isValidIpv4, B as isValidIpv6, C as parseDnsResponse, E as parseGeoResponse, F as parseHar, I as searchHeaders, J as searchStatusCodes, K as statusCodeToText, L as typeNumberToLabel, M as validateDomain, N as validateHeaderName, O as validateHeaderValue } from '../network-DwyAjwJS.cjs';
@@ -1 +1 @@
1
- export { D as DNS_RECORD_TYPES, a as DnsRecord, b as DnsRecordType, c as DnsResponse, G as GeoResult, H as HTTP_HEADERS, d as HeaderCategory, e as HttpHeader, P as ParsedDnsResult, f as ParsedGeoResult, S as STATUS_CODES, g as StatusCode, h as buildDnsQueryUrl, i as buildGeoUrl, j as buildMapUrl, k as countryCodeToFlag, l as formatCoordinates, m as formatTtl, o as getByCategory, p as getHeader, q as getHeadersByCategory, r as getStatusByCategory, s as getStatusCode, t as isClientError, u as isServerError, v as isSuccess, w as isValidIp, x as isValidIpv4, y as isValidIpv6, z as parseDnsResponse, A as parseGeoResponse, B as searchHeaders, C as searchStatusCodes, E as statusCodeToText, F as typeNumberToLabel, I as validateDomain, J as validateHeaderName, K as validateHeaderValue } from '../network-CNtmrDeN.js';
1
+ export { D as DNS_RECORD_TYPES, a as DnsRecord, b as DnsRecordType, c as DnsResponse, G as GeoResult, H as HTTP_HEADERS, d as HarEntry, e as HarParseResult, f as HarSummary, g as HeaderCategory, h as HttpHeader, P as ParsedDnsResult, i as ParsedGeoResult, S as STATUS_CODES, j as StatusCode, k as buildDnsQueryUrl, l as buildGeoUrl, m as buildMapUrl, o as countryCodeToFlag, p as formatCoordinates, q as formatTtl, r as getByCategory, s as getHeader, t as getHeadersByCategory, u as getStatusByCategory, v as getStatusCode, w as isClientError, x as isServerError, y as isSuccess, z as isValidIp, A as isValidIpv4, B as isValidIpv6, C as parseDnsResponse, E as parseGeoResponse, F as parseHar, I as searchHeaders, J as searchStatusCodes, K as statusCodeToText, L as typeNumberToLabel, M as validateDomain, N as validateHeaderName, O as validateHeaderValue } from '../network-DwyAjwJS.js';
@@ -1,2 +1,2 @@
1
- export { DNS_RECORD_TYPES, HTTP_HEADERS, STATUS_CODES, buildDnsQueryUrl, buildGeoUrl, buildMapUrl, countryCodeToFlag, formatCoordinates, formatTtl, getByCategory, getHeader, getHeadersByCategory, getStatusByCategory, getStatusCode, isClientError, isServerError, isSuccess, isValidIp, isValidIpv4, isValidIpv6, parseDnsResponse, parseGeoResponse, searchHeaders, searchStatusCodes, statusCodeToText, typeNumberToLabel, validateDomain, validateHeaderName, validateHeaderValue } from '../chunk-3BAHSW4C.js';
1
+ export { DNS_RECORD_TYPES, HTTP_HEADERS, STATUS_CODES, buildDnsQueryUrl, buildGeoUrl, buildMapUrl, countryCodeToFlag, formatCoordinates, formatTtl, getByCategory, getHeader, getHeadersByCategory, getStatusByCategory, getStatusCode, isClientError, isServerError, isSuccess, isValidIp, isValidIpv4, isValidIpv6, parseDnsResponse, parseGeoResponse, parseHar, searchHeaders, searchStatusCodes, statusCodeToText, typeNumberToLabel, validateDomain, validateHeaderName, validateHeaderValue } from '../chunk-V5JKVDBA.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -21,16 +21,16 @@ function formatValue(value, unit, decimals = 4) {
21
21
  return `${value.toFixed(decimals)}${unit}`;
22
22
  }
23
23
  var COMMON_SIZES = [
24
- { px: 8, label: "8px \u2014 Extra small spacing / icon size" },
25
- { px: 12, label: "12px \u2014 Small text / caption" },
26
- { px: 14, label: "14px \u2014 Body small / secondary text" },
27
- { px: 16, label: "16px \u2014 Base font size / body text" },
28
- { px: 18, label: "18px \u2014 Body large / lead text" },
29
- { px: 20, label: "20px \u2014 Subheading / large body" },
30
- { px: 24, label: "24px \u2014 H4 / section title" },
31
- { px: 32, label: "32px \u2014 H3 / card heading" },
32
- { px: 48, label: "48px \u2014 H2 / page section heading" },
33
- { px: 64, label: "64px \u2014 H1 / hero heading" }
24
+ { px: 8, label: "8px: Extra small spacing / icon size" },
25
+ { px: 12, label: "12px: Small text / caption" },
26
+ { px: 14, label: "14px: Body small / secondary text" },
27
+ { px: 16, label: "16px: Base font size / body text" },
28
+ { px: 18, label: "18px: Body large / lead text" },
29
+ { px: 20, label: "20px: Subheading / large body" },
30
+ { px: 24, label: "24px: H4 / section title" },
31
+ { px: 32, label: "32px: H3 / card heading" },
32
+ { px: 48, label: "48px: H2 / page section heading" },
33
+ { px: 64, label: "64px: H1 / hero heading" }
34
34
  ];
35
35
  function pxToViewport(px, viewportWidth = 1440, viewportHeight = 900) {
36
36
  const vw = parseFloat((px / viewportWidth * 100).toFixed(4));
@@ -1,2 +1,2 @@
1
- export { BASE_LABELS, BASE_PREFIXES, BYTE_UNITS, COMMON_CURRENCIES, COMMON_LOCALES, COMMON_PERMISSIONS, COMMON_RATIOS, COMMON_SIZES, COMMON_VIEWPORTS, autoFormat, bumpVersion, calcAspectRatio, calcSubnet, compareSemver, convert, convertBytes, convertIp, coverBox, decimalToIp, decimalToIpCidr, describePermissions, fitIntoBox, formatNumber, formatValue, formatVwValue, formatWithSeparator, gcd, ipFromBinary, ipFromDecimal, ipFromHex, ipToBinary, ipToDecimal, ipToDecimalCidr, ipToHex, ipToOctal, isValid, isValidCidr, isValidIp, isValidIpv4, octalToPermissions, parseFileSize, parseInput, parseNumberString, parseSemver, permissionsToChmod, permissionsToOctal, permissionsToSymbolic, ptToPx, pxToAll, pxToViewport, remToPx, satisfiesRange, scaleByHeight, scaleByWidth, sortVersions, splitSubnet, symbolicToPermissions, viewportToPx } from '../chunk-XST6X3HT.js';
1
+ export { BASE_LABELS, BASE_PREFIXES, BYTE_UNITS, COMMON_CURRENCIES, COMMON_LOCALES, COMMON_PERMISSIONS, COMMON_RATIOS, COMMON_SIZES, COMMON_VIEWPORTS, autoFormat, bumpVersion, calcAspectRatio, calcSubnet, compareSemver, convert, convertBytes, convertIp, coverBox, decimalToIp, decimalToIpCidr, describePermissions, fitIntoBox, formatNumber, formatValue, formatVwValue, formatWithSeparator, gcd, ipFromBinary, ipFromDecimal, ipFromHex, ipToBinary, ipToDecimal, ipToDecimalCidr, ipToHex, ipToOctal, isValid, isValidCidr, isValidIp, isValidIpv4, octalToPermissions, parseFileSize, parseInput, parseNumberString, parseSemver, permissionsToChmod, permissionsToOctal, permissionsToSymbolic, ptToPx, pxToAll, pxToViewport, remToPx, satisfiesRange, scaleByHeight, scaleByWidth, sortVersions, splitSubnet, symbolicToPermissions, viewportToPx } from '../chunk-QJE743LY.js';
2
2
  import '../chunk-MLKGABMK.js';
package/package.json CHANGED
@@ -1,10 +1,17 @@
1
1
  {
2
2
  "name": "@utilix-tech/sdk",
3
- "version": "0.3.0",
4
- "description": "100+ developer utility tools for Node.js JSON, encoding, hashing, color, CSS, network and more. Runs locally, no API key required.",
3
+ "version": "0.4.0",
4
+ "description": "140+ 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",
7
- "homepage": "https://utilix.tech",
7
+ "homepage": "https://www.utilix.tech/docs#node-sdk",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/utilix-tech/utilix-sdk.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/utilix-tech/utilix-sdk/issues"
14
+ },
8
15
  "keywords": [
9
16
  "developer-tools",
10
17
  "utilities",
@@ -16,6 +23,11 @@
16
23
  "network",
17
24
  "sdk",
18
25
  "devtools",
26
+ "typescript",
27
+ "jwt",
28
+ "regex",
29
+ "uuid",
30
+ "api-client",
19
31
  "utilix"
20
32
  ],
21
33
  "engines": {
@@ -115,7 +127,9 @@
115
127
  "files": [
116
128
  "dist",
117
129
  "README.md",
118
- "LICENSE"
130
+ "LICENSE",
131
+ "CHANGELOG.md",
132
+ "SECURITY.md"
119
133
  ],
120
134
  "scripts": {
121
135
  "build": "tsup",