@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/dist/index.cjs CHANGED
@@ -2103,6 +2103,7 @@ __export(text_exports, {
2103
2103
  applyOps: () => applyOps,
2104
2104
  calculateStringDistance: () => calculateStringDistance,
2105
2105
  centerText: () => centerText,
2106
+ checkOxfordCommaConsistency: () => checkOxfordCommaConsistency,
2106
2107
  convertAll: () => convertAll,
2107
2108
  convertCase: () => convertCase,
2108
2109
  countWords: () => countWords,
@@ -2111,6 +2112,7 @@ __export(text_exports, {
2111
2112
  detectDelimiter: () => detectDelimiter,
2112
2113
  detectFillerWords: () => detectFillerWords,
2113
2114
  detectPassiveVoice: () => detectPassiveVoice,
2115
+ detectWordyPhrases: () => detectWordyPhrases,
2114
2116
  diffLines: () => diffLines,
2115
2117
  diffLinesSimple: () => diffLinesSimple,
2116
2118
  diffStats: () => diffStats,
@@ -5180,6 +5182,100 @@ function getEmojiByCategory(category) {
5180
5182
  function getEmojiCategories() {
5181
5183
  return Array.from(new Set(EMOJI_TABLE.map((e) => e.category)));
5182
5184
  }
5185
+ var WORDY_PHRASES = [
5186
+ { phrase: "due to the fact that", suggestion: "because" },
5187
+ { phrase: "in spite of the fact that", suggestion: "although" },
5188
+ { phrase: "despite the fact that", suggestion: "although" },
5189
+ { phrase: "in order to", suggestion: "to" },
5190
+ { phrase: "for the purpose of", suggestion: "for" },
5191
+ { phrase: "in the event that", suggestion: "if" },
5192
+ { phrase: "in the near future", suggestion: "soon" },
5193
+ { phrase: "at this point in time", suggestion: "now" },
5194
+ { phrase: "at the present time", suggestion: "now" },
5195
+ { phrase: "on a daily basis", suggestion: "daily" },
5196
+ { phrase: "on a regular basis", suggestion: "regularly" },
5197
+ { phrase: "in a timely manner", suggestion: "promptly" },
5198
+ { phrase: "with regard to", suggestion: "regarding" },
5199
+ { phrase: "with respect to", suggestion: "regarding" },
5200
+ { phrase: "in regards to", suggestion: "regarding" },
5201
+ { phrase: "with the exception of", suggestion: "except" },
5202
+ { phrase: "in close proximity to", suggestion: "near" },
5203
+ { phrase: "take into consideration", suggestion: "consider" },
5204
+ { phrase: "give consideration to", suggestion: "consider" },
5205
+ { phrase: "make a decision", suggestion: "decide" },
5206
+ { phrase: "is able to", suggestion: "can" },
5207
+ { phrase: "are able to", suggestion: "can" },
5208
+ { phrase: "a large number of", suggestion: "many" },
5209
+ { phrase: "a majority of", suggestion: "most" },
5210
+ { phrase: "each and every", suggestion: "each" },
5211
+ { phrase: "first and foremost", suggestion: "first" },
5212
+ { phrase: "last but not least", suggestion: "finally" },
5213
+ { phrase: "null and void", suggestion: "void" },
5214
+ { phrase: "whether or not", suggestion: "whether" },
5215
+ { phrase: "the reason why", suggestion: "the reason" },
5216
+ { phrase: "end result", suggestion: "result" },
5217
+ { phrase: "future plans", suggestion: "plans" },
5218
+ { phrase: "past history", suggestion: "history" },
5219
+ { phrase: "basic fundamentals", suggestion: "fundamentals" },
5220
+ { phrase: "absolutely essential", suggestion: "essential" },
5221
+ { phrase: "it is important to note that", suggestion: "(often removable)" },
5222
+ { phrase: "as a matter of fact", suggestion: "in fact" },
5223
+ { phrase: "in the process of", suggestion: "(often removable)" }
5224
+ ];
5225
+ function _wordyRegex(phrase) {
5226
+ const tokens = phrase.split(/\s+/).map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"));
5227
+ return new RegExp("\\b" + tokens.join("\\s+") + "\\b", "gi");
5228
+ }
5229
+ function detectWordyPhrases(text) {
5230
+ const totalWords = (text.match(/[A-Za-z0-9']+/g) ?? []).length;
5231
+ const matches = [];
5232
+ for (const entry of WORDY_PHRASES) {
5233
+ const re = _wordyRegex(entry.phrase);
5234
+ const indices = [];
5235
+ let m;
5236
+ while ((m = re.exec(text)) !== null) {
5237
+ indices.push(m.index);
5238
+ if (m.index === re.lastIndex) re.lastIndex++;
5239
+ }
5240
+ if (indices.length > 0) {
5241
+ matches.push({ phrase: entry.phrase, suggestion: entry.suggestion, count: indices.length, indices });
5242
+ }
5243
+ }
5244
+ matches.sort((a, b) => b.count - a.count || a.phrase.localeCompare(b.phrase));
5245
+ const totalMatches = matches.reduce((s, m) => s + m.count, 0);
5246
+ const density = totalWords > 0 ? Math.round(totalMatches / totalWords * 1e3) / 10 : 0;
5247
+ return { totalWords, totalMatches, density, matches };
5248
+ }
5249
+ var _OXFORD_CONJ_RE = /(,)?\s+\b(?:and|or)\b\s+/gi;
5250
+ function checkOxfordCommaConsistency(text) {
5251
+ const instances = [];
5252
+ _OXFORD_CONJ_RE.lastIndex = 0;
5253
+ let m;
5254
+ while ((m = _OXFORD_CONJ_RE.exec(text)) !== null) {
5255
+ const matchStart = m.index;
5256
+ const hasCommaBefore = !!m[1];
5257
+ let clauseStart = -1;
5258
+ for (const ch of [".", "!", "?", "\n"]) {
5259
+ const idx = text.lastIndexOf(ch, matchStart - 1);
5260
+ if (idx > clauseStart) clauseStart = idx;
5261
+ }
5262
+ clauseStart += 1;
5263
+ const clause = text.slice(clauseStart, matchStart);
5264
+ const commaCount = (clause.match(/,/g) ?? []).length;
5265
+ if (commaCount < 1) continue;
5266
+ const snippetStart = Math.max(clauseStart, matchStart - 60);
5267
+ const afterConjEnd = _OXFORD_CONJ_RE.lastIndex;
5268
+ const tail = text.slice(afterConjEnd);
5269
+ const boundaryOffset = tail.search(/[.!?\n,]/);
5270
+ const snippetEnd = boundaryOffset === -1 ? Math.min(text.length, afterConjEnd + 40) : afterConjEnd + boundaryOffset;
5271
+ const snippet = text.slice(snippetStart, snippetEnd).trim();
5272
+ instances.push({ snippet, hasOxfordComma: hasCommaBefore, index: matchStart });
5273
+ }
5274
+ const withOxfordComma = instances.filter((i) => i.hasOxfordComma).length;
5275
+ const withoutOxfordComma = instances.length - withOxfordComma;
5276
+ const consistent = withOxfordComma === 0 || withoutOxfordComma === 0;
5277
+ return { totalLists: instances.length, withOxfordComma, withoutOxfordComma, consistent, instances };
5278
+ }
5183
5279
 
5184
5280
  // src/tools/data.ts
5185
5281
  var data_exports = {};
@@ -11369,6 +11465,7 @@ __export(network_exports, {
11369
11465
  parseVaryHeader: () => parseVaryHeader,
11370
11466
  parseXContentTypeOptionsHeader: () => parseXContentTypeOptionsHeader,
11371
11467
  parseXRobotsTag: () => parseXRobotsTag,
11468
+ scoreSecurityHeaders: () => scoreSecurityHeaders,
11372
11469
  searchHeaders: () => searchHeaders,
11373
11470
  searchStatusCodes: () => searchStatusCodes,
11374
11471
  splitSitemap: () => splitSitemap,
@@ -14808,6 +14905,123 @@ function calculateCookieSizeBudget(cookieHeader, budgetBytes = DEFAULT_COOKIE_BU
14808
14905
  exceedsBudget: totalBytes > budgetBytes
14809
14906
  };
14810
14907
  }
14908
+ function parseRawHeaderBlock(raw) {
14909
+ const map = /* @__PURE__ */ new Map();
14910
+ for (const line of raw.split(/\r?\n/)) {
14911
+ const trimmed = line.trim();
14912
+ if (!trimmed) continue;
14913
+ const idx = trimmed.indexOf(":");
14914
+ if (idx === -1) continue;
14915
+ const name = trimmed.slice(0, idx).trim().toLowerCase();
14916
+ const value = trimmed.slice(idx + 1).trim();
14917
+ if (!map.has(name)) map.set(name, value);
14918
+ }
14919
+ return map;
14920
+ }
14921
+ var SECURITY_HEADER_CHECKS = [
14922
+ {
14923
+ header: "Content-Security-Policy",
14924
+ evaluate: (v) => {
14925
+ if (!v) return { status: "missing", note: "Without a CSP, an injected script runs with full page privileges." };
14926
+ if (/unsafe-inline|unsafe-eval/i.test(v)) return { status: "warning", note: "Contains unsafe-inline or unsafe-eval, which weakens XSS protection." };
14927
+ return { status: "pass", note: "Present. Use the CSP Header Builder tool to validate its directives in depth." };
14928
+ }
14929
+ },
14930
+ {
14931
+ header: "Strict-Transport-Security",
14932
+ evaluate: (v) => {
14933
+ if (!v) return { status: "missing", note: "Without HSTS, a user's first visit (and any later downgrade) can be sent over plain HTTP." };
14934
+ const maxAgeMatch = v.match(/max-age\s*=\s*(\d+)/i);
14935
+ if (!maxAgeMatch) return { status: "warning", note: "Present but missing a max-age directive." };
14936
+ const maxAge = Number(maxAgeMatch[1]);
14937
+ if (maxAge < 31536e3) return { status: "warning", note: "max-age is below the recommended 1 year (31536000 seconds)." };
14938
+ return { status: "pass", note: "Present with a max-age of at least 1 year." };
14939
+ }
14940
+ },
14941
+ {
14942
+ header: "X-Content-Type-Options",
14943
+ evaluate: (v) => {
14944
+ if (!v) return { status: "missing", note: "Without this header, browsers may MIME-sniff a response into an unintended content type." };
14945
+ if (v.trim().toLowerCase() !== "nosniff") return { status: "warning", note: `"nosniff" is the only valid value; this value won't take effect.` };
14946
+ return { status: "pass", note: "Set to the only valid value, nosniff." };
14947
+ }
14948
+ },
14949
+ {
14950
+ header: "X-Frame-Options",
14951
+ evaluate: (v) => {
14952
+ if (!v) return { status: "missing", note: "Without this (or a CSP frame-ancestors directive), the page can be framed by another site for clickjacking." };
14953
+ const upper = v.trim().toUpperCase();
14954
+ if (upper === "DENY" || upper === "SAMEORIGIN") return { status: "pass", note: `Framing restricted (${upper}).` };
14955
+ if (upper.startsWith("ALLOW-FROM")) return { status: "warning", note: "ALLOW-FROM is deprecated and ignored by most modern browsers." };
14956
+ return { status: "warning", note: "Unrecognized value." };
14957
+ }
14958
+ },
14959
+ {
14960
+ header: "Referrer-Policy",
14961
+ evaluate: (v) => {
14962
+ if (!v) return { status: "missing", note: "Without this header, the browser's default referrer behavior applies, which can leak full URLs to third parties." };
14963
+ if (v.trim().toLowerCase() === "unsafe-url") return { status: "warning", note: "unsafe-url leaks the full URL, including path and query string, to every destination." };
14964
+ return { status: "pass", note: "Present." };
14965
+ }
14966
+ },
14967
+ {
14968
+ header: "Permissions-Policy",
14969
+ evaluate: (v) => {
14970
+ if (!v) return { status: "missing", note: "Without this header, embedded content can use powerful browser features (camera, geolocation, etc.) unless restricted another way." };
14971
+ return { status: "pass", note: "Present." };
14972
+ }
14973
+ },
14974
+ {
14975
+ header: "Cross-Origin-Opener-Policy",
14976
+ evaluate: (v) => {
14977
+ if (!v) return { status: "missing", note: "Without COOP, this page can be put in the same browsing context group as a malicious opener window." };
14978
+ const lower = v.trim().toLowerCase();
14979
+ if (lower === "same-origin") return { status: "pass", note: "Set to same-origin, the strongest isolation value." };
14980
+ return { status: "warning", note: `Set to "${v.trim()}", which is weaker than same-origin.` };
14981
+ }
14982
+ },
14983
+ {
14984
+ header: "Cross-Origin-Embedder-Policy",
14985
+ evaluate: (v) => {
14986
+ if (!v) return { status: "missing", note: "Required alongside COOP for cross-origin isolation (e.g. to use SharedArrayBuffer)." };
14987
+ const lower = v.trim().toLowerCase();
14988
+ if (lower === "require-corp" || lower === "credentialless") return { status: "pass", note: `Set to ${lower}.` };
14989
+ return { status: "warning", note: `Unrecognized value "${v.trim()}".` };
14990
+ }
14991
+ },
14992
+ {
14993
+ header: "Cross-Origin-Resource-Policy",
14994
+ evaluate: (v) => {
14995
+ if (!v) return { status: "missing", note: "Without CORP, this resource can be loaded cross-origin by any site that knows its URL." };
14996
+ const lower = v.trim().toLowerCase();
14997
+ if (lower === "same-origin" || lower === "same-site") return { status: "pass", note: `Set to ${lower}.` };
14998
+ if (lower === "cross-origin") return { status: "warning", note: "Set to cross-origin, which allows any site to load this resource." };
14999
+ return { status: "warning", note: `Unrecognized value "${v.trim()}".` };
15000
+ }
15001
+ }
15002
+ ];
15003
+ function scoreSecurityHeaders(rawHeaders) {
15004
+ if (typeof rawHeaders !== "string" || !rawHeaders.trim()) {
15005
+ return { error: 'Paste one or more response headers, one per line in "Name: value" form' };
15006
+ }
15007
+ const headerMap = parseRawHeaderBlock(rawHeaders);
15008
+ if (headerMap.size === 0) {
15009
+ return { error: 'Could not parse any "Name: value" header lines from the input' };
15010
+ }
15011
+ const checks = SECURITY_HEADER_CHECKS.map((def) => {
15012
+ const value = headerMap.get(def.header.toLowerCase()) ?? null;
15013
+ const { status, note } = def.evaluate(value);
15014
+ return { header: def.header, status, value, note };
15015
+ });
15016
+ const passCount = checks.filter((c) => c.status === "pass").length;
15017
+ const warningCount = checks.filter((c) => c.status === "warning").length;
15018
+ const missingCount = checks.filter((c) => c.status === "missing").length;
15019
+ const totalChecks = checks.length;
15020
+ const points = passCount + warningCount * 0.5;
15021
+ const score = Math.round(points / totalChecks * 100);
15022
+ const grade = score >= 90 ? "A" : score >= 75 ? "B" : score >= 60 ? "C" : score >= 40 ? "D" : "F";
15023
+ return { checks, score, grade, passCount, warningCount, missingCount, totalChecks };
15024
+ }
14811
15025
 
14812
15026
  // src/tools/api.ts
14813
15027
  var api_exports = {};
@@ -24806,6 +25020,7 @@ __export(media_exports, {
24806
25020
  readImageInfo: () => readImageInfo,
24807
25021
  readMidiInfo: () => readMidiInfo,
24808
25022
  readPdfMetadata: () => readPdfMetadata,
25023
+ readPdfOutline: () => readPdfOutline,
24809
25024
  readPdfPageDimensions: () => readPdfPageDimensions,
24810
25025
  readVideoInfo: () => readVideoInfo,
24811
25026
  readWavInfo: () => readWavInfo
@@ -25376,6 +25591,74 @@ function readPdfPageDimensions(bytes) {
25376
25591
  if (out.length === 0) return { error: "Could not locate any page objects in this PDF" };
25377
25592
  return { version: version2, pageCount: out.length, pages: out };
25378
25593
  }
25594
+ function parsePdfOutlineDest(dict) {
25595
+ const directRef = dict.match(/\/Dest\s*\[\s*(\d+)\s+(\d+)\s+R/);
25596
+ if (directRef) return { destType: "page", target: `${directRef[1]} ${directRef[2]} R` };
25597
+ const directName = dict.match(/\/Dest\s*\/([^\s/()<>[\]]+)/);
25598
+ if (directName) return { destType: "named", target: directName[1] };
25599
+ const directString = dict.match(/\/Dest\s*\(((?:\\.|[^\\()])*)\)/);
25600
+ if (directString) return { destType: "named", target: decodePdfString(directString[1], false) };
25601
+ const actionUri = dict.match(/\/S\s*\/URI[\s\S]*?\/URI\s*\(((?:\\.|[^\\()])*)\)/);
25602
+ if (actionUri) return { destType: "uri", target: decodePdfString(actionUri[1], false) };
25603
+ const actionGotoRef = dict.match(/\/S\s*\/GoTo[\s\S]*?\/D\s*\[\s*(\d+)\s+(\d+)\s+R/);
25604
+ if (actionGotoRef) return { destType: "page", target: `${actionGotoRef[1]} ${actionGotoRef[2]} R` };
25605
+ const actionGotoName = dict.match(/\/S\s*\/GoTo[\s\S]*?\/D\s*\/([^\s/()<>[\]]+)/);
25606
+ if (actionGotoName) return { destType: "named", target: actionGotoName[1] };
25607
+ return { destType: "none", target: null };
25608
+ }
25609
+ function walkPdfOutlineChain(objMap, startRef, level, visited, out) {
25610
+ let ref = startRef;
25611
+ while (ref) {
25612
+ if (visited.has(ref)) break;
25613
+ visited.add(ref);
25614
+ const body = objMap.get(ref);
25615
+ if (!body) break;
25616
+ const titleRaw = extractDictField(body, "Title");
25617
+ const { destType, target } = parsePdfOutlineDest(body);
25618
+ out.push({ title: titleRaw ?? "(untitled)", level, destType, target });
25619
+ const firstMatch = body.match(/\/First\s+(\d+)\s+(\d+)\s+R/);
25620
+ if (firstMatch) walkPdfOutlineChain(objMap, `${firstMatch[1]} ${firstMatch[2]}`, level + 1, visited, out);
25621
+ const nextMatch = body.match(/\/Next\s+(\d+)\s+(\d+)\s+R/);
25622
+ ref = nextMatch ? `${nextMatch[1]} ${nextMatch[2]}` : null;
25623
+ }
25624
+ }
25625
+ function readPdfOutline(bytes) {
25626
+ if (bytes.length < 8) return { error: "File too small to be a PDF" };
25627
+ const header = bytesToLatin1(bytes.subarray(0, 16));
25628
+ const versionMatch = header.match(/%PDF-(\d\.\d)/);
25629
+ if (!versionMatch) return { error: "Not a valid PDF file (missing %PDF header)" };
25630
+ const version2 = versionMatch[1];
25631
+ const text = bytesToLatin1(bytes);
25632
+ const objBlocks = [...text.matchAll(/(\d+)\s+(\d+)\s+obj([\s\S]*?)endobj/g)];
25633
+ const objMap = /* @__PURE__ */ new Map();
25634
+ for (const b of objBlocks) objMap.set(`${b[1]} ${b[2]}`, b[3]);
25635
+ let outlinesBody = null;
25636
+ const trailerMatches = [...text.matchAll(/trailer\s*<<([\s\S]*?)>>/g)];
25637
+ if (trailerMatches.length > 0) {
25638
+ const trailer = trailerMatches[trailerMatches.length - 1][1];
25639
+ const rootRef = trailer.match(/\/Root\s+(\d+)\s+(\d+)\s+R/);
25640
+ if (rootRef) {
25641
+ const catalogBody = objMap.get(`${rootRef[1]} ${rootRef[2]}`);
25642
+ const outlinesRef = catalogBody?.match(/\/Outlines\s+(\d+)\s+(\d+)\s+R/);
25643
+ if (outlinesRef) outlinesBody = objMap.get(`${outlinesRef[1]} ${outlinesRef[2]}`) ?? null;
25644
+ }
25645
+ }
25646
+ if (!outlinesBody) {
25647
+ for (const b of objBlocks) {
25648
+ if (/\/Type\s*\/Outlines\b/.test(b[3])) {
25649
+ outlinesBody = b[3];
25650
+ break;
25651
+ }
25652
+ }
25653
+ }
25654
+ if (!outlinesBody) return { error: "No /Outlines bookmark tree found in this PDF" };
25655
+ const out = [];
25656
+ const firstMatch = outlinesBody.match(/\/First\s+(\d+)\s+(\d+)\s+R/);
25657
+ if (firstMatch) {
25658
+ walkPdfOutlineChain(objMap, `${firstMatch[1]} ${firstMatch[2]}`, 0, /* @__PURE__ */ new Set(), out);
25659
+ }
25660
+ return { version: version2, bookmarkCount: out.length, bookmarks: out };
25661
+ }
25379
25662
  var AUDIO_FORMAT_LABELS = {
25380
25663
  1: "PCM",
25381
25664
  3: "IEEE float",
package/dist/index.d.cts CHANGED
@@ -1,19 +1,19 @@
1
1
  export { j as json } from './json-CaiYsGDQ.cjs';
2
2
  export { e as encoding } from './encoding-Dk3wpmb3.cjs';
3
3
  export { h as hashing } from './hashing-CJjlvqS_.cjs';
4
- export { t as text } from './text-DWUcY8H1.cjs';
4
+ export { t as text } from './text-CNn3whZA.cjs';
5
5
  export { d as data } from './data-26TALa9U.cjs';
6
6
  export { g as generators } from './generators-DAXXrMvG.cjs';
7
7
  export { t as time } from './time-KqJjdqII.cjs';
8
8
  export { u as units } from './units-BqegyALA.cjs';
9
- export { n as network } from './network-Da3meCWM.cjs';
9
+ export { n as network } from './network-BskZe1n2.cjs';
10
10
  export { a as api } from './api-CQnIUrVB.cjs';
11
11
  export { c as code } from './code-46xO9xFf.cjs';
12
12
  export { c as color } from './color-tPwZCr9H.cjs';
13
13
  export { c as css } from './css-Cf7AMGM-.cjs';
14
14
  export { m as misc } from './misc-CA3N198T.cjs';
15
15
  export { a as ai_agent } from './ai_agent-CmrVjvYH.cjs';
16
- export { m as media } from './media-56zrIBw4.cjs';
16
+ export { m as media } from './media-DF8BS-iA.cjs';
17
17
 
18
18
  declare const version = "0.1.0";
19
19
 
package/dist/index.d.ts CHANGED
@@ -1,19 +1,19 @@
1
1
  export { j as json } from './json-CaiYsGDQ.js';
2
2
  export { e as encoding } from './encoding-Dk3wpmb3.js';
3
3
  export { h as hashing } from './hashing-CJjlvqS_.js';
4
- export { t as text } from './text-DWUcY8H1.js';
4
+ export { t as text } from './text-CNn3whZA.js';
5
5
  export { d as data } from './data-26TALa9U.js';
6
6
  export { g as generators } from './generators-DAXXrMvG.js';
7
7
  export { t as time } from './time-KqJjdqII.js';
8
8
  export { u as units } from './units-BqegyALA.js';
9
- export { n as network } from './network-Da3meCWM.js';
9
+ export { n as network } from './network-BskZe1n2.js';
10
10
  export { a as api } from './api-CQnIUrVB.js';
11
11
  export { c as code } from './code-46xO9xFf.js';
12
12
  export { c as color } from './color-tPwZCr9H.js';
13
13
  export { c as css } from './css-Cf7AMGM-.js';
14
14
  export { m as misc } from './misc-CA3N198T.js';
15
15
  export { a as ai_agent } from './ai_agent-CmrVjvYH.js';
16
- export { m as media } from './media-56zrIBw4.js';
16
+ export { m as media } from './media-DF8BS-iA.js';
17
17
 
18
18
  declare const version = "0.1.0";
19
19
 
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- export { media_exports as media } from './chunk-PT4N4UBL.js';
1
+ export { media_exports as media } from './chunk-ZWFZRDQ4.js';
2
2
  export { units_exports as units } from './chunk-RP574L5Z.js';
3
- export { network_exports as network } from './chunk-CXUOV672.js';
3
+ export { network_exports as network } from './chunk-KWS4ZCYG.js';
4
4
  export { api_exports as api } from './chunk-U2HREMZU.js';
5
5
  export { code_exports as code } from './chunk-XT2BQWXT.js';
6
6
  export { color_exports as color } from './chunk-BPVAB4P2.js';
@@ -10,7 +10,7 @@ export { ai_agent_exports as ai_agent } from './chunk-EKIXOA7B.js';
10
10
  export { json_exports as json } from './chunk-34C6GXCC.js';
11
11
  export { encoding_exports as encoding } from './chunk-DOWQZUTP.js';
12
12
  export { hashing_exports as hashing } from './chunk-PET2CGTH.js';
13
- export { text_exports as text } from './chunk-P7TXG7CI.js';
13
+ export { text_exports as text } from './chunk-QVOK3BXM.js';
14
14
  export { data_exports as data } from './chunk-HJVSH7FQ.js';
15
15
  export { generators_exports as generators } from './chunk-422ICOZX.js';
16
16
  export { time_exports as time } from './chunk-IEPWZERQ.js';
@@ -87,6 +87,32 @@ interface PdfPageDimensionsResult {
87
87
  * PDF spec requires. No PDF rendering library required.
88
88
  */
89
89
  declare function readPdfPageDimensions(bytes: Uint8Array): PdfPageDimensionsResult | PdfMetadataError;
90
+ type PdfOutlineDestType = 'page' | 'uri' | 'named' | 'none';
91
+ interface PdfOutlineItem {
92
+ title: string;
93
+ level: number;
94
+ destType: PdfOutlineDestType;
95
+ target: string | null;
96
+ }
97
+ interface PdfOutlineResult {
98
+ version: string | null;
99
+ bookmarkCount: number;
100
+ bookmarks: PdfOutlineItem[];
101
+ }
102
+ interface PdfOutlineError {
103
+ error: string;
104
+ }
105
+ /**
106
+ * Walk a PDF's /Outlines bookmark tree (the Root -> Outlines -> First/Next/
107
+ * First chain of entries a PDF viewer's sidebar builds its table of
108
+ * contents from) and list every bookmark's title, nesting level, and link
109
+ * target, in document order. Only the destination's raw target is reported
110
+ * (an object reference for a page link, a URI for a web link, or a name for
111
+ * a named destination) — this does not resolve a page-ref target to a page
112
+ * number, since that requires a second pass over the page tree; pair it
113
+ * with readPdfPageDimensions's output if you need that mapping.
114
+ */
115
+ declare function readPdfOutline(bytes: Uint8Array): PdfOutlineResult | PdfOutlineError;
90
116
  interface WavInfo {
91
117
  audioFormat: number;
92
118
  audioFormatLabel: string;
@@ -285,6 +311,10 @@ type media_MidiTimeSignature = MidiTimeSignature;
285
311
  type media_MidiTrackInfo = MidiTrackInfo;
286
312
  type media_PdfMetadata = PdfMetadata;
287
313
  type media_PdfMetadataError = PdfMetadataError;
314
+ type media_PdfOutlineDestType = PdfOutlineDestType;
315
+ type media_PdfOutlineError = PdfOutlineError;
316
+ type media_PdfOutlineItem = PdfOutlineItem;
317
+ type media_PdfOutlineResult = PdfOutlineResult;
288
318
  type media_PdfPageDimension = PdfPageDimension;
289
319
  type media_PdfPageDimensionsResult = PdfPageDimensionsResult;
290
320
  type media_PdfPageOrientation = PdfPageOrientation;
@@ -300,11 +330,12 @@ declare const media_readId3Tags: typeof readId3Tags;
300
330
  declare const media_readImageInfo: typeof readImageInfo;
301
331
  declare const media_readMidiInfo: typeof readMidiInfo;
302
332
  declare const media_readPdfMetadata: typeof readPdfMetadata;
333
+ declare const media_readPdfOutline: typeof readPdfOutline;
303
334
  declare const media_readPdfPageDimensions: typeof readPdfPageDimensions;
304
335
  declare const media_readVideoInfo: typeof readVideoInfo;
305
336
  declare const media_readWavInfo: typeof readWavInfo;
306
337
  declare namespace media {
307
- export { type media_ExifData as ExifData, type media_ExifError as ExifError, type media_FlacInfo as FlacInfo, type media_FlacInfoError as FlacInfoError, type media_GifInfo as GifInfo, type media_GifInfoError as GifInfoError, type media_IcoImageEntry as IcoImageEntry, type media_IcoInfo as IcoInfo, type media_IcoInfoError as IcoInfoError, type media_Id3Tags as Id3Tags, type media_Id3TagsError as Id3TagsError, type media_ImageFormat as ImageFormat, type media_ImageInfo as ImageInfo, type media_ImageInfoError as ImageInfoError, type media_MidiDivision as MidiDivision, type media_MidiInfo as MidiInfo, type media_MidiInfoError as MidiInfoError, type media_MidiTimeSignature as MidiTimeSignature, type media_MidiTrackInfo as MidiTrackInfo, type media_PdfMetadata as PdfMetadata, type media_PdfMetadataError as PdfMetadataError, type media_PdfPageDimension as PdfPageDimension, type media_PdfPageDimensionsResult as PdfPageDimensionsResult, type media_PdfPageOrientation as PdfPageOrientation, type media_VideoInfo as VideoInfo, type media_VideoInfoError as VideoInfoError, type media_WavInfo as WavInfo, type media_WavInfoError as WavInfoError, media_inspectGifFrames as inspectGifFrames, media_readExifData as readExifData, media_readFlacInfo as readFlacInfo, media_readIcoInfo as readIcoInfo, media_readId3Tags as readId3Tags, media_readImageInfo as readImageInfo, media_readMidiInfo as readMidiInfo, media_readPdfMetadata as readPdfMetadata, media_readPdfPageDimensions as readPdfPageDimensions, media_readVideoInfo as readVideoInfo, media_readWavInfo as readWavInfo };
338
+ export { type media_ExifData as ExifData, type media_ExifError as ExifError, type media_FlacInfo as FlacInfo, type media_FlacInfoError as FlacInfoError, type media_GifInfo as GifInfo, type media_GifInfoError as GifInfoError, type media_IcoImageEntry as IcoImageEntry, type media_IcoInfo as IcoInfo, type media_IcoInfoError as IcoInfoError, type media_Id3Tags as Id3Tags, type media_Id3TagsError as Id3TagsError, type media_ImageFormat as ImageFormat, type media_ImageInfo as ImageInfo, type media_ImageInfoError as ImageInfoError, type media_MidiDivision as MidiDivision, type media_MidiInfo as MidiInfo, type media_MidiInfoError as MidiInfoError, type media_MidiTimeSignature as MidiTimeSignature, type media_MidiTrackInfo as MidiTrackInfo, type media_PdfMetadata as PdfMetadata, type media_PdfMetadataError as PdfMetadataError, type media_PdfOutlineDestType as PdfOutlineDestType, type media_PdfOutlineError as PdfOutlineError, type media_PdfOutlineItem as PdfOutlineItem, type media_PdfOutlineResult as PdfOutlineResult, type media_PdfPageDimension as PdfPageDimension, type media_PdfPageDimensionsResult as PdfPageDimensionsResult, type media_PdfPageOrientation as PdfPageOrientation, type media_VideoInfo as VideoInfo, type media_VideoInfoError as VideoInfoError, type media_WavInfo as WavInfo, type media_WavInfoError as WavInfoError, media_inspectGifFrames as inspectGifFrames, media_readExifData as readExifData, media_readFlacInfo as readFlacInfo, media_readIcoInfo as readIcoInfo, media_readId3Tags as readId3Tags, media_readImageInfo as readImageInfo, media_readMidiInfo as readMidiInfo, media_readPdfMetadata as readPdfMetadata, media_readPdfOutline as readPdfOutline, media_readPdfPageDimensions as readPdfPageDimensions, media_readVideoInfo as readVideoInfo, media_readWavInfo as readWavInfo };
308
339
  }
309
340
 
310
- export { readImageInfo as A, readMidiInfo as B, readPdfMetadata as C, readPdfPageDimensions as D, type ExifData as E, type FlacInfo as F, type GifInfo as G, readVideoInfo as H, type IcoImageEntry as I, readWavInfo as J, type MidiDivision as M, type PdfMetadata as P, type VideoInfo as V, type WavInfo as W, type ExifError as a, type FlacInfoError as b, type GifInfoError as c, type IcoInfo as d, type IcoInfoError as e, type Id3Tags as f, type Id3TagsError as g, type ImageFormat as h, type ImageInfo as i, type ImageInfoError as j, type MidiInfo as k, type MidiInfoError as l, media as m, type MidiTimeSignature as n, type MidiTrackInfo as o, type PdfMetadataError as p, type PdfPageDimension as q, type PdfPageDimensionsResult as r, type PdfPageOrientation as s, type VideoInfoError as t, type WavInfoError as u, inspectGifFrames as v, readExifData as w, readFlacInfo as x, readIcoInfo as y, readId3Tags as z };
341
+ export { readExifData as A, readFlacInfo as B, readIcoInfo as C, readId3Tags as D, type ExifData as E, type FlacInfo as F, type GifInfo as G, readImageInfo as H, type IcoImageEntry as I, readMidiInfo as J, readPdfMetadata as K, readPdfOutline as L, type MidiDivision as M, readPdfPageDimensions as N, readVideoInfo as O, type PdfMetadata as P, readWavInfo as Q, type VideoInfo as V, type WavInfo as W, type ExifError as a, type FlacInfoError as b, type GifInfoError as c, type IcoInfo as d, type IcoInfoError as e, type Id3Tags as f, type Id3TagsError as g, type ImageFormat as h, type ImageInfo as i, type ImageInfoError as j, type MidiInfo as k, type MidiInfoError as l, media as m, type MidiTimeSignature as n, type MidiTrackInfo as o, type PdfMetadataError as p, type PdfOutlineDestType as q, type PdfOutlineError as r, type PdfOutlineItem as s, type PdfOutlineResult as t, type PdfPageDimension as u, type PdfPageDimensionsResult as v, type PdfPageOrientation as w, type VideoInfoError as x, type WavInfoError as y, inspectGifFrames as z };
@@ -87,6 +87,32 @@ interface PdfPageDimensionsResult {
87
87
  * PDF spec requires. No PDF rendering library required.
88
88
  */
89
89
  declare function readPdfPageDimensions(bytes: Uint8Array): PdfPageDimensionsResult | PdfMetadataError;
90
+ type PdfOutlineDestType = 'page' | 'uri' | 'named' | 'none';
91
+ interface PdfOutlineItem {
92
+ title: string;
93
+ level: number;
94
+ destType: PdfOutlineDestType;
95
+ target: string | null;
96
+ }
97
+ interface PdfOutlineResult {
98
+ version: string | null;
99
+ bookmarkCount: number;
100
+ bookmarks: PdfOutlineItem[];
101
+ }
102
+ interface PdfOutlineError {
103
+ error: string;
104
+ }
105
+ /**
106
+ * Walk a PDF's /Outlines bookmark tree (the Root -> Outlines -> First/Next/
107
+ * First chain of entries a PDF viewer's sidebar builds its table of
108
+ * contents from) and list every bookmark's title, nesting level, and link
109
+ * target, in document order. Only the destination's raw target is reported
110
+ * (an object reference for a page link, a URI for a web link, or a name for
111
+ * a named destination) — this does not resolve a page-ref target to a page
112
+ * number, since that requires a second pass over the page tree; pair it
113
+ * with readPdfPageDimensions's output if you need that mapping.
114
+ */
115
+ declare function readPdfOutline(bytes: Uint8Array): PdfOutlineResult | PdfOutlineError;
90
116
  interface WavInfo {
91
117
  audioFormat: number;
92
118
  audioFormatLabel: string;
@@ -285,6 +311,10 @@ type media_MidiTimeSignature = MidiTimeSignature;
285
311
  type media_MidiTrackInfo = MidiTrackInfo;
286
312
  type media_PdfMetadata = PdfMetadata;
287
313
  type media_PdfMetadataError = PdfMetadataError;
314
+ type media_PdfOutlineDestType = PdfOutlineDestType;
315
+ type media_PdfOutlineError = PdfOutlineError;
316
+ type media_PdfOutlineItem = PdfOutlineItem;
317
+ type media_PdfOutlineResult = PdfOutlineResult;
288
318
  type media_PdfPageDimension = PdfPageDimension;
289
319
  type media_PdfPageDimensionsResult = PdfPageDimensionsResult;
290
320
  type media_PdfPageOrientation = PdfPageOrientation;
@@ -300,11 +330,12 @@ declare const media_readId3Tags: typeof readId3Tags;
300
330
  declare const media_readImageInfo: typeof readImageInfo;
301
331
  declare const media_readMidiInfo: typeof readMidiInfo;
302
332
  declare const media_readPdfMetadata: typeof readPdfMetadata;
333
+ declare const media_readPdfOutline: typeof readPdfOutline;
303
334
  declare const media_readPdfPageDimensions: typeof readPdfPageDimensions;
304
335
  declare const media_readVideoInfo: typeof readVideoInfo;
305
336
  declare const media_readWavInfo: typeof readWavInfo;
306
337
  declare namespace media {
307
- export { type media_ExifData as ExifData, type media_ExifError as ExifError, type media_FlacInfo as FlacInfo, type media_FlacInfoError as FlacInfoError, type media_GifInfo as GifInfo, type media_GifInfoError as GifInfoError, type media_IcoImageEntry as IcoImageEntry, type media_IcoInfo as IcoInfo, type media_IcoInfoError as IcoInfoError, type media_Id3Tags as Id3Tags, type media_Id3TagsError as Id3TagsError, type media_ImageFormat as ImageFormat, type media_ImageInfo as ImageInfo, type media_ImageInfoError as ImageInfoError, type media_MidiDivision as MidiDivision, type media_MidiInfo as MidiInfo, type media_MidiInfoError as MidiInfoError, type media_MidiTimeSignature as MidiTimeSignature, type media_MidiTrackInfo as MidiTrackInfo, type media_PdfMetadata as PdfMetadata, type media_PdfMetadataError as PdfMetadataError, type media_PdfPageDimension as PdfPageDimension, type media_PdfPageDimensionsResult as PdfPageDimensionsResult, type media_PdfPageOrientation as PdfPageOrientation, type media_VideoInfo as VideoInfo, type media_VideoInfoError as VideoInfoError, type media_WavInfo as WavInfo, type media_WavInfoError as WavInfoError, media_inspectGifFrames as inspectGifFrames, media_readExifData as readExifData, media_readFlacInfo as readFlacInfo, media_readIcoInfo as readIcoInfo, media_readId3Tags as readId3Tags, media_readImageInfo as readImageInfo, media_readMidiInfo as readMidiInfo, media_readPdfMetadata as readPdfMetadata, media_readPdfPageDimensions as readPdfPageDimensions, media_readVideoInfo as readVideoInfo, media_readWavInfo as readWavInfo };
338
+ export { type media_ExifData as ExifData, type media_ExifError as ExifError, type media_FlacInfo as FlacInfo, type media_FlacInfoError as FlacInfoError, type media_GifInfo as GifInfo, type media_GifInfoError as GifInfoError, type media_IcoImageEntry as IcoImageEntry, type media_IcoInfo as IcoInfo, type media_IcoInfoError as IcoInfoError, type media_Id3Tags as Id3Tags, type media_Id3TagsError as Id3TagsError, type media_ImageFormat as ImageFormat, type media_ImageInfo as ImageInfo, type media_ImageInfoError as ImageInfoError, type media_MidiDivision as MidiDivision, type media_MidiInfo as MidiInfo, type media_MidiInfoError as MidiInfoError, type media_MidiTimeSignature as MidiTimeSignature, type media_MidiTrackInfo as MidiTrackInfo, type media_PdfMetadata as PdfMetadata, type media_PdfMetadataError as PdfMetadataError, type media_PdfOutlineDestType as PdfOutlineDestType, type media_PdfOutlineError as PdfOutlineError, type media_PdfOutlineItem as PdfOutlineItem, type media_PdfOutlineResult as PdfOutlineResult, type media_PdfPageDimension as PdfPageDimension, type media_PdfPageDimensionsResult as PdfPageDimensionsResult, type media_PdfPageOrientation as PdfPageOrientation, type media_VideoInfo as VideoInfo, type media_VideoInfoError as VideoInfoError, type media_WavInfo as WavInfo, type media_WavInfoError as WavInfoError, media_inspectGifFrames as inspectGifFrames, media_readExifData as readExifData, media_readFlacInfo as readFlacInfo, media_readIcoInfo as readIcoInfo, media_readId3Tags as readId3Tags, media_readImageInfo as readImageInfo, media_readMidiInfo as readMidiInfo, media_readPdfMetadata as readPdfMetadata, media_readPdfOutline as readPdfOutline, media_readPdfPageDimensions as readPdfPageDimensions, media_readVideoInfo as readVideoInfo, media_readWavInfo as readWavInfo };
308
339
  }
309
340
 
310
- export { readImageInfo as A, readMidiInfo as B, readPdfMetadata as C, readPdfPageDimensions as D, type ExifData as E, type FlacInfo as F, type GifInfo as G, readVideoInfo as H, type IcoImageEntry as I, readWavInfo as J, type MidiDivision as M, type PdfMetadata as P, type VideoInfo as V, type WavInfo as W, type ExifError as a, type FlacInfoError as b, type GifInfoError as c, type IcoInfo as d, type IcoInfoError as e, type Id3Tags as f, type Id3TagsError as g, type ImageFormat as h, type ImageInfo as i, type ImageInfoError as j, type MidiInfo as k, type MidiInfoError as l, media as m, type MidiTimeSignature as n, type MidiTrackInfo as o, type PdfMetadataError as p, type PdfPageDimension as q, type PdfPageDimensionsResult as r, type PdfPageOrientation as s, type VideoInfoError as t, type WavInfoError as u, inspectGifFrames as v, readExifData as w, readFlacInfo as x, readIcoInfo as y, readId3Tags as z };
341
+ export { readExifData as A, readFlacInfo as B, readIcoInfo as C, readId3Tags as D, type ExifData as E, type FlacInfo as F, type GifInfo as G, readImageInfo as H, type IcoImageEntry as I, readMidiInfo as J, readPdfMetadata as K, readPdfOutline as L, type MidiDivision as M, readPdfPageDimensions as N, readVideoInfo as O, type PdfMetadata as P, readWavInfo as Q, type VideoInfo as V, type WavInfo as W, type ExifError as a, type FlacInfoError as b, type GifInfoError as c, type IcoInfo as d, type IcoInfoError as e, type Id3Tags as f, type Id3TagsError as g, type ImageFormat as h, type ImageInfo as i, type ImageInfoError as j, type MidiInfo as k, type MidiInfoError as l, media as m, type MidiTimeSignature as n, type MidiTrackInfo as o, type PdfMetadataError as p, type PdfOutlineDestType as q, type PdfOutlineError as r, type PdfOutlineItem as s, type PdfOutlineResult as t, type PdfPageDimension as u, type PdfPageDimensionsResult as v, type PdfPageOrientation as w, type VideoInfoError as x, type WavInfoError as y, inspectGifFrames as z };