@utilix-tech/sdk 0.3.1 → 0.5.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 (37) hide show
  1. package/README.md +34 -12
  2. package/dist/{api-8aZtWhSj.d.cts → api-Xl7OzIgq.d.cts} +35 -2
  3. package/dist/{api-8aZtWhSj.d.ts → api-Xl7OzIgq.d.ts} +35 -2
  4. package/dist/{chunk-UC656APA.js → chunk-DNCOIO5N.js} +64 -1
  5. package/dist/{chunk-HFRTZE7T.js → chunk-Q3B3YWOA.js} +51 -1
  6. package/dist/{chunk-3BAHSW4C.js → chunk-V5JKVDBA.js} +60 -1
  7. package/dist/chunk-WWKPLYEP.js +277 -0
  8. package/dist/{data-rMjWNiOJ.d.cts → data-CakDxAcT.d.cts} +36 -2
  9. package/dist/{data-rMjWNiOJ.d.ts → data-CakDxAcT.d.ts} +36 -2
  10. package/dist/index.cjs +316 -1
  11. package/dist/index.d.cts +4 -4
  12. package/dist/index.d.ts +4 -4
  13. package/dist/index.js +4 -4
  14. package/dist/media-D-K5aZnq.d.cts +53 -0
  15. package/dist/media-D-K5aZnq.d.ts +53 -0
  16. package/dist/{network-CNtmrDeN.d.cts → network-DwyAjwJS.d.cts} +39 -2
  17. package/dist/{network-CNtmrDeN.d.ts → network-DwyAjwJS.d.ts} +39 -2
  18. package/dist/tools/api.cjs +50 -0
  19. package/dist/tools/api.d.cts +1 -1
  20. package/dist/tools/api.d.ts +1 -1
  21. package/dist/tools/api.js +1 -1
  22. package/dist/tools/data.cjs +63 -0
  23. package/dist/tools/data.d.cts +1 -1
  24. package/dist/tools/data.d.ts +1 -1
  25. package/dist/tools/data.js +1 -1
  26. package/dist/tools/media.cjs +143 -0
  27. package/dist/tools/media.d.cts +1 -1
  28. package/dist/tools/media.d.ts +1 -1
  29. package/dist/tools/media.js +1 -1
  30. package/dist/tools/network.cjs +59 -0
  31. package/dist/tools/network.d.cts +1 -1
  32. package/dist/tools/network.d.ts +1 -1
  33. package/dist/tools/network.js +1 -1
  34. package/package.json +1 -1
  35. package/dist/chunk-N7C52YGL.js +0 -134
  36. package/dist/media-DF2cx3pK.d.cts +0 -28
  37. package/dist/media-DF2cx3pK.d.ts +0 -28
@@ -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 };
@@ -444,6 +444,55 @@ function decodeJwt(token) {
444
444
  function formatJwtJson(obj) {
445
445
  return JSON.stringify(obj, null, 2);
446
446
  }
447
+ function base64urlByteLength(s) {
448
+ const clean = s.replace(/=+$/, "");
449
+ return Math.floor(clean.length * 6 / 8);
450
+ }
451
+ function parseJwks(input) {
452
+ const trimmed = input.trim();
453
+ if (!trimmed) return { ok: false, error: "No input provided" };
454
+ let data;
455
+ try {
456
+ data = JSON.parse(trimmed);
457
+ } catch (e) {
458
+ return { ok: false, error: `Invalid JSON: ${e instanceof Error ? e.message : String(e)}` };
459
+ }
460
+ let rawKeys;
461
+ if (data && typeof data === "object" && Array.isArray(data.keys)) {
462
+ rawKeys = data.keys;
463
+ } else if (data && typeof data === "object" && typeof data.kty === "string") {
464
+ rawKeys = [data];
465
+ } else {
466
+ return { ok: false, error: 'Input must be a JWKS object with a "keys" array, or a single JWK object with a "kty" field' };
467
+ }
468
+ const keys = rawKeys.map((k) => {
469
+ const key = k ?? {};
470
+ const kty = typeof key.kty === "string" ? key.kty : "unknown";
471
+ let keySize = null;
472
+ let curve;
473
+ if (kty === "RSA" && typeof key.n === "string") {
474
+ keySize = base64urlByteLength(key.n) * 8;
475
+ } else if ((kty === "EC" || kty === "OKP") && typeof key.crv === "string") {
476
+ curve = key.crv;
477
+ } else if (kty === "oct" && typeof key.k === "string") {
478
+ keySize = base64urlByteLength(key.k) * 8;
479
+ }
480
+ return {
481
+ kty,
482
+ use: typeof key.use === "string" ? key.use : void 0,
483
+ keyOps: Array.isArray(key.key_ops) ? key.key_ops.filter((x) => typeof x === "string") : void 0,
484
+ alg: typeof key.alg === "string" ? key.alg : void 0,
485
+ kid: typeof key.kid === "string" ? key.kid : void 0,
486
+ keySize,
487
+ curve,
488
+ raw: key
489
+ };
490
+ });
491
+ const kidCounts = /* @__PURE__ */ new Map();
492
+ for (const k of keys) if (k.kid) kidCounts.set(k.kid, (kidCounts.get(k.kid) ?? 0) + 1);
493
+ const duplicateKids = [...kidCounts.entries()].filter(([, c]) => c > 1).map(([kid]) => kid);
494
+ return { ok: true, keys, count: keys.length, duplicateKids };
495
+ }
447
496
  var ALG_TO_NODE_HASH = {
448
497
  HS256: "sha256",
449
498
  HS384: "sha384",
@@ -1207,6 +1256,7 @@ exports.normalizeUrl = normalizeUrl;
1207
1256
  exports.parseCspHeader = parseCspHeader;
1208
1257
  exports.parseCurl = parseCurl;
1209
1258
  exports.parseCurlCommand = parseCurlCommand;
1259
+ exports.parseJwks = parseJwks;
1210
1260
  exports.parseMetaTags = parseMetaTags;
1211
1261
  exports.parseUrl = parseUrl;
1212
1262
  exports.removeParam = removeParam;
@@ -1 +1 @@
1
- export { C as COMMON_HEADERS, b as COMMON_PRESETS, c as CORS_COMMON_HEADERS, d as CorsConfig, e as CorsOutput, f as CspConfig, g as CspDirective, h as CspSource, i as CurlCommand, j as CurlConfig, D as DEFAULT_CORS_CONFIG, k as DIRECTIVE_DESCRIPTIONS, l as DirectiveConfig, F as FormatResult, H as HTTP_METHODS, m as Header, n as HttpMethod, J as JwtAlgorithm, o as JwtDecodeError, p as JwtDecodeResult, q as JwtExpiry, r as JwtPart, s as JwtResult, t as JwtSignOptions, M as MetaTags, O as OgTags, P as ParsedUrl, R as ResponseFormat, S as SUPPORTED_LANGUAGES, T as TargetLanguage, u as TwitterTags, v as addParam, w as base64urlDecode, x as base64urlEncode, y as buildCurl, z as buildCurlMultiline, A as buildUrl, B as convertToCode, E as decodeJwt, G as decodeUrlComponent, I as detectFormat, K as encodeUrlComponent, L as extractJsonPaths, N as formatJwtJson, Q as formatResponse, U as generateCors, V as generateCspHeader, W as generateFullHeader, X as generateMetaHtml, Y as getParam, Z as getStats, _ as isValidUrl, $ as normalizeUrl, a0 as parseCspHeader, a1 as parseCurl, a2 as parseCurlCommand, a3 as parseMetaTags, a4 as parseUrl, a5 as removeParam, a6 as signJwt, a7 as validateCorsConfig, a8 as validateCspConfig, a9 as validateOgTags } from '../api-8aZtWhSj.cjs';
1
+ export { C as COMMON_HEADERS, b as COMMON_PRESETS, c as CORS_COMMON_HEADERS, d as CorsConfig, e as CorsOutput, f as CspConfig, g as CspDirective, h as CspSource, i as CurlCommand, j as CurlConfig, D as DEFAULT_CORS_CONFIG, k as DIRECTIVE_DESCRIPTIONS, l as DirectiveConfig, F as FormatResult, H as HTTP_METHODS, m as Header, n as HttpMethod, J as JwkSummary, o as JwksError, p as JwksParseResult, q as JwksResult, r as JwtAlgorithm, s as JwtDecodeError, t as JwtDecodeResult, u as JwtExpiry, v as JwtPart, w as JwtResult, x as JwtSignOptions, M as MetaTags, O as OgTags, P as ParsedUrl, R as ResponseFormat, S as SUPPORTED_LANGUAGES, T as TargetLanguage, y as TwitterTags, z as addParam, A as base64urlDecode, B as base64urlEncode, E as buildCurl, G as buildCurlMultiline, I as buildUrl, K as convertToCode, L as decodeJwt, N as decodeUrlComponent, Q as detectFormat, U as encodeUrlComponent, V as extractJsonPaths, W as formatJwtJson, X as formatResponse, Y as generateCors, Z as generateCspHeader, _ as generateFullHeader, $ as generateMetaHtml, a0 as getParam, a1 as getStats, a2 as isValidUrl, a3 as normalizeUrl, a4 as parseCspHeader, a5 as parseCurl, a6 as parseCurlCommand, a7 as parseJwks, a8 as parseMetaTags, a9 as parseUrl, aa as removeParam, ab as signJwt, ac as validateCorsConfig, ad as validateCspConfig, ae as validateOgTags } from '../api-Xl7OzIgq.cjs';
@@ -1 +1 @@
1
- export { C as COMMON_HEADERS, b as COMMON_PRESETS, c as CORS_COMMON_HEADERS, d as CorsConfig, e as CorsOutput, f as CspConfig, g as CspDirective, h as CspSource, i as CurlCommand, j as CurlConfig, D as DEFAULT_CORS_CONFIG, k as DIRECTIVE_DESCRIPTIONS, l as DirectiveConfig, F as FormatResult, H as HTTP_METHODS, m as Header, n as HttpMethod, J as JwtAlgorithm, o as JwtDecodeError, p as JwtDecodeResult, q as JwtExpiry, r as JwtPart, s as JwtResult, t as JwtSignOptions, M as MetaTags, O as OgTags, P as ParsedUrl, R as ResponseFormat, S as SUPPORTED_LANGUAGES, T as TargetLanguage, u as TwitterTags, v as addParam, w as base64urlDecode, x as base64urlEncode, y as buildCurl, z as buildCurlMultiline, A as buildUrl, B as convertToCode, E as decodeJwt, G as decodeUrlComponent, I as detectFormat, K as encodeUrlComponent, L as extractJsonPaths, N as formatJwtJson, Q as formatResponse, U as generateCors, V as generateCspHeader, W as generateFullHeader, X as generateMetaHtml, Y as getParam, Z as getStats, _ as isValidUrl, $ as normalizeUrl, a0 as parseCspHeader, a1 as parseCurl, a2 as parseCurlCommand, a3 as parseMetaTags, a4 as parseUrl, a5 as removeParam, a6 as signJwt, a7 as validateCorsConfig, a8 as validateCspConfig, a9 as validateOgTags } from '../api-8aZtWhSj.js';
1
+ export { C as COMMON_HEADERS, b as COMMON_PRESETS, c as CORS_COMMON_HEADERS, d as CorsConfig, e as CorsOutput, f as CspConfig, g as CspDirective, h as CspSource, i as CurlCommand, j as CurlConfig, D as DEFAULT_CORS_CONFIG, k as DIRECTIVE_DESCRIPTIONS, l as DirectiveConfig, F as FormatResult, H as HTTP_METHODS, m as Header, n as HttpMethod, J as JwkSummary, o as JwksError, p as JwksParseResult, q as JwksResult, r as JwtAlgorithm, s as JwtDecodeError, t as JwtDecodeResult, u as JwtExpiry, v as JwtPart, w as JwtResult, x as JwtSignOptions, M as MetaTags, O as OgTags, P as ParsedUrl, R as ResponseFormat, S as SUPPORTED_LANGUAGES, T as TargetLanguage, y as TwitterTags, z as addParam, A as base64urlDecode, B as base64urlEncode, E as buildCurl, G as buildCurlMultiline, I as buildUrl, K as convertToCode, L as decodeJwt, N as decodeUrlComponent, Q as detectFormat, U as encodeUrlComponent, V as extractJsonPaths, W as formatJwtJson, X as formatResponse, Y as generateCors, Z as generateCspHeader, _ as generateFullHeader, $ as generateMetaHtml, a0 as getParam, a1 as getStats, a2 as isValidUrl, a3 as normalizeUrl, a4 as parseCspHeader, a5 as parseCurl, a6 as parseCurlCommand, a7 as parseJwks, a8 as parseMetaTags, a9 as parseUrl, aa as removeParam, ab as signJwt, ac as validateCorsConfig, ad as validateCspConfig, ae as validateOgTags } from '../api-Xl7OzIgq.js';
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-HFRTZE7T.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, parseJwks, parseMetaTags, parseUrl, removeParam, signJwt, validateCorsConfig, validateCspConfig, validateOgTags } from '../chunk-Q3B3YWOA.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';
@@ -126,5 +126,148 @@ function readImageInfo(bytes) {
126
126
  }
127
127
  return { error: "Unrecognized image format. Supported formats: PNG, JPEG, GIF, WebP, BMP" };
128
128
  }
129
+ function bytesToLatin1(bytes) {
130
+ let out = "";
131
+ const CHUNK = 32768;
132
+ for (let i = 0; i < bytes.length; i += CHUNK) {
133
+ out += String.fromCharCode(...bytes.subarray(i, i + CHUNK));
134
+ }
135
+ return out;
136
+ }
137
+ function decodePdfString(raw, isHex) {
138
+ const bytes = [];
139
+ if (isHex) {
140
+ const hex = raw.replace(/\s+/g, "");
141
+ const padded = hex.length % 2 === 0 ? hex : hex + "0";
142
+ for (let i = 0; i < padded.length; i += 2) bytes.push(parseInt(padded.slice(i, i + 2), 16));
143
+ } else {
144
+ const s = raw.replace(/\\\r\n|\\\r|\\\n/g, "");
145
+ for (let i = 0; i < s.length; i++) {
146
+ const ch = s[i];
147
+ if (ch === "\\" && i + 1 < s.length) {
148
+ const next = s[i + 1];
149
+ if (next === "n") {
150
+ bytes.push(10);
151
+ i++;
152
+ } else if (next === "r") {
153
+ bytes.push(13);
154
+ i++;
155
+ } else if (next === "t") {
156
+ bytes.push(9);
157
+ i++;
158
+ } else if (next === "b") {
159
+ bytes.push(8);
160
+ i++;
161
+ } else if (next === "f") {
162
+ bytes.push(12);
163
+ i++;
164
+ } else if (next === "(" || next === ")" || next === "\\") {
165
+ bytes.push(next.charCodeAt(0));
166
+ i++;
167
+ } else if (/[0-7]/.test(next)) {
168
+ let oct = next;
169
+ i++;
170
+ for (let k = 0; k < 2 && i + 1 < s.length && /[0-7]/.test(s[i + 1]); k++) {
171
+ i++;
172
+ oct += s[i];
173
+ }
174
+ bytes.push(parseInt(oct, 8) & 255);
175
+ } else {
176
+ bytes.push(next.charCodeAt(0));
177
+ i++;
178
+ }
179
+ } else {
180
+ bytes.push(ch.charCodeAt(0) & 255);
181
+ }
182
+ }
183
+ }
184
+ if (bytes.length >= 2 && bytes[0] === 254 && bytes[1] === 255) {
185
+ let out = "";
186
+ for (let i = 2; i + 1 < bytes.length; i += 2) out += String.fromCharCode(bytes[i] << 8 | bytes[i + 1]);
187
+ return out;
188
+ }
189
+ return bytes.map((b) => String.fromCharCode(b)).join("");
190
+ }
191
+ function extractDictField(dict, key) {
192
+ const litMatch = dict.match(new RegExp(`/${key}\\s*\\(((?:\\\\.|[^\\\\()])*)\\)`));
193
+ if (litMatch) return decodePdfString(litMatch[1], false);
194
+ const hexMatch = dict.match(new RegExp(`/${key}\\s*<([0-9A-Fa-f\\s]*)>`));
195
+ if (hexMatch) return decodePdfString(hexMatch[1], true);
196
+ return null;
197
+ }
198
+ function findObject(text, objNum, gen) {
199
+ const m = text.match(new RegExp(`(?:^|[^0-9])${objNum}\\s+${gen}\\s+obj([\\s\\S]*?)endobj`));
200
+ return m ? m[1] : null;
201
+ }
202
+ function parsePdfDate(raw) {
203
+ const m = raw.match(/^D:(\d{4})(\d{2})?(\d{2})?(\d{2})?(\d{2})?(\d{2})?([Z+-])?(\d{2})?'?(\d{2})?'?/);
204
+ if (!m) return null;
205
+ const [, y, mo = "01", d = "01", h = "00", mi = "00", s = "00", tz, tzh, tzm] = m;
206
+ let iso = `${y}-${mo}-${d}T${h}:${mi}:${s}`;
207
+ if (tz === "Z") iso += "Z";
208
+ else if (tz === "+" || tz === "-") iso += `${tz}${tzh ?? "00"}:${tzm ?? "00"}`;
209
+ return iso;
210
+ }
211
+ function readPdfMetadata(bytes) {
212
+ if (bytes.length < 8) return { error: "File too small to be a PDF" };
213
+ const header = bytesToLatin1(bytes.subarray(0, 16));
214
+ const versionMatch = header.match(/%PDF-(\d\.\d)/);
215
+ if (!versionMatch) return { error: "Not a valid PDF file (missing %PDF header)" };
216
+ const version = versionMatch[1];
217
+ const text = bytesToLatin1(bytes);
218
+ const trailerMatches = [...text.matchAll(/trailer\s*<<([\s\S]*?)>>/g)];
219
+ let infoDict = null;
220
+ let encrypted = false;
221
+ if (trailerMatches.length > 0) {
222
+ const trailer = trailerMatches[trailerMatches.length - 1][1];
223
+ encrypted = /\/Encrypt\s+\d+\s+\d+\s+R/.test(trailer);
224
+ const infoRef = trailer.match(/\/Info\s+(\d+)\s+(\d+)\s+R/);
225
+ if (infoRef) infoDict = findObject(text, Number(infoRef[1]), Number(infoRef[2]));
226
+ }
227
+ const objBlocks = [...text.matchAll(/(\d+)\s+(\d+)\s+obj([\s\S]*?)endobj/g)];
228
+ if (!infoDict) {
229
+ for (const b of objBlocks) {
230
+ if (/\/(Title|Author|Producer|Creator|CreationDate)\b/.test(b[3]) && !/\/Type\s*\/(Page|Pages|Catalog|Font)\b/.test(b[3])) {
231
+ infoDict = b[3];
232
+ break;
233
+ }
234
+ }
235
+ }
236
+ const title = infoDict ? extractDictField(infoDict, "Title") : null;
237
+ const author = infoDict ? extractDictField(infoDict, "Author") : null;
238
+ const subject = infoDict ? extractDictField(infoDict, "Subject") : null;
239
+ const keywords = infoDict ? extractDictField(infoDict, "Keywords") : null;
240
+ const creator = infoDict ? extractDictField(infoDict, "Creator") : null;
241
+ const producer = infoDict ? extractDictField(infoDict, "Producer") : null;
242
+ const creationDateRaw = infoDict ? extractDictField(infoDict, "CreationDate") : null;
243
+ const modDateRaw = infoDict ? extractDictField(infoDict, "ModDate") : null;
244
+ let pageCount = null;
245
+ for (const b of objBlocks) {
246
+ if (!/\/Type\s*\/Pages\b/.test(b[3])) continue;
247
+ const countMatch = b[3].match(/\/Count\s+(\d+)/);
248
+ if (countMatch) {
249
+ const c = Number(countMatch[1]);
250
+ if (pageCount === null || c > pageCount) pageCount = c;
251
+ }
252
+ }
253
+ if (pageCount === null) {
254
+ const pageMatches = text.match(/\/Type\s*\/Page(?!s)\b/g);
255
+ if (pageMatches) pageCount = pageMatches.length;
256
+ }
257
+ return {
258
+ version,
259
+ pageCount,
260
+ title,
261
+ author,
262
+ subject,
263
+ keywords,
264
+ creator,
265
+ producer,
266
+ creationDate: creationDateRaw ? parsePdfDate(creationDateRaw) ?? creationDateRaw : null,
267
+ modDate: modDateRaw ? parsePdfDate(modDateRaw) ?? modDateRaw : null,
268
+ encrypted
269
+ };
270
+ }
129
271
 
130
272
  exports.readImageInfo = readImageInfo;
273
+ exports.readPdfMetadata = readPdfMetadata;
@@ -1 +1 @@
1
- export { I as ImageFormat, a as ImageInfo, b as ImageInfoError, r as readImageInfo } from '../media-DF2cx3pK.cjs';
1
+ export { I as ImageFormat, a as ImageInfo, b as ImageInfoError, P as PdfMetadata, c as PdfMetadataError, r as readImageInfo, d as readPdfMetadata } from '../media-D-K5aZnq.cjs';
@@ -1 +1 @@
1
- export { I as ImageFormat, a as ImageInfo, b as ImageInfoError, r as readImageInfo } from '../media-DF2cx3pK.js';
1
+ export { I as ImageFormat, a as ImageInfo, b as ImageInfoError, P as PdfMetadata, c as PdfMetadataError, r as readImageInfo, d as readPdfMetadata } from '../media-D-K5aZnq.js';
@@ -1,2 +1,2 @@
1
- export { readImageInfo } from '../chunk-N7C52YGL.js';
1
+ export { readImageInfo, readPdfMetadata } from '../chunk-WWKPLYEP.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';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@utilix-tech/sdk",
3
- "version": "0.3.1",
3
+ "version": "0.5.0",
4
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",