@utilix-tech/sdk 0.75.0 → 0.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/README.md +24 -4
- package/dist/{chunk-CXUOV672.js → chunk-KWS4ZCYG.js} +119 -1
- package/dist/{chunk-P7TXG7CI.js → chunk-QVOK3BXM.js} +97 -1
- package/dist/{chunk-PT4N4UBL.js → chunk-ZWFZRDQ4.js} +70 -1
- package/dist/index.cjs +283 -0
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/{media-56zrIBw4.d.ts → media-DF8BS-iA.d.cts} +33 -2
- package/dist/{media-56zrIBw4.d.cts → media-DF8BS-iA.d.ts} +33 -2
- package/dist/{network-Da3meCWM.d.cts → network-BskZe1n2.d.cts} +34 -2
- package/dist/{network-Da3meCWM.d.ts → network-BskZe1n2.d.ts} +34 -2
- package/dist/{text-DWUcY8H1.d.cts → text-CNn3whZA.d.cts} +55 -2
- package/dist/{text-DWUcY8H1.d.ts → text-CNn3whZA.d.ts} +55 -2
- package/dist/tools/media.cjs +69 -0
- package/dist/tools/media.d.cts +1 -1
- package/dist/tools/media.d.ts +1 -1
- package/dist/tools/media.js +1 -1
- package/dist/tools/network.cjs +118 -0
- package/dist/tools/network.d.cts +1 -1
- package/dist/tools/network.d.ts +1 -1
- package/dist/tools/network.js +1 -1
- package/dist/tools/text.cjs +96 -0
- package/dist/tools/text.d.cts +1 -1
- package/dist/tools/text.d.ts +1 -1
- package/dist/tools/text.js +1 -1
- package/package.json +1 -1
package/dist/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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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 {
|
|
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 {
|
|
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 };
|