@utilix-tech/sdk 0.67.0 → 0.69.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 CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  Full release notes for all Utilix surfaces (browser tools, REST API, SDKs, MCP server) live at [utilix.tech/changelog](https://utilix.tech/changelog). This file tracks just this package.
4
4
 
5
+ ## 0.69.0
6
+ - Add `parseCommitTrailers` (git-commit-trailer-parser): parse a commit message's trailer block (Co-authored-by, Signed-off-by, Fixes, Reviewed-by, etc.) per git's RFC 822-style trailer convention, returning each trailer's key and value plus the body with the trailer block removed.
7
+ - Add `extractMarkdownFootnotes` (markdown-footnote-extractor): extract every Markdown-Extra-style footnote reference and definition from a document, flagging references with no matching definition and definitions that are never referenced.
8
+
9
+ ## 0.68.0
10
+ - Add `buildRobotsMetaTag`, `parseRobotsMetaTag` (robots-meta-tag-builder): build a `<meta name="robots" content="...">` tag from the same directive vocabulary as X-Robots-Tag, optionally scoped to a crawler via the name attribute, or parse an existing tag into the same shape.
11
+ - Add `extractSvgSpriteSymbols` (svg-sprite-symbol-extractor): parse an SVG sprite sheet's `<symbol>` definitions and list each one's id, viewBox, width, and height, alongside a ready-to-paste `<use href="#id"></use>` usage snippet.
12
+
5
13
  ## 0.67.0
6
14
  - Add `analyzeRegexGroups` (regex-groups): parse a regex pattern's capture groups (numbered and named) and backreferences, flagging any backreference pointing at a group that doesn't exist or hasn't finished being defined yet at that point in the pattern.
7
15
 
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @utilix-tech/sdk
2
2
 
3
- **684 developer utility functions for Node.js: runs locally, no API key required.**
3
+ **688 developer utility functions for Node.js: runs locally, no API key required.**
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/@utilix-tech/sdk?style=flat-square&color=cb3837)](https://www.npmjs.com/package/@utilix-tech/sdk)
6
6
  [![npm downloads](https://img.shields.io/npm/dm/@utilix-tech/sdk?style=flat-square)](https://www.npmjs.com/package/@utilix-tech/sdk)
@@ -676,6 +676,11 @@ parseMultipartFormData('--X\r\nContent-Disposition: form-data; name="a"\r\n\r\nh
676
676
  // Extract the boundary parameter from a Content-Type header value
677
677
  extractMultipartBoundary("multipart/form-data; boundary=----WebKitFormBoundaryABC123");
678
678
  // "----WebKitFormBoundaryABC123"
679
+
680
+ // Build a <meta name="robots" content="..."> tag, the same directive vocabulary as X-Robots-Tag
681
+ import { buildRobotsMetaTag, parseRobotsMetaTag } from "@utilix-tech/sdk/network";
682
+ buildRobotsMetaTag({ flags: ["noindex", "nofollow"], name: "googlebot" });
683
+ // { content: "noindex, nofollow", name: "googlebot", tag: '<meta name="googlebot" content="noindex, nofollow">', directives: [...], notes: [...], warnings: [] }
679
684
  ```
680
685
 
681
686
  ---
@@ -786,6 +791,21 @@ validatePackageExports(JSON.stringify({ exports: { import: "./index.mjs", requir
786
791
  // Classify each package.json dependency's version range and flag wildcards, "latest", git/URL/file deps, and conflicting duplicates
787
792
  auditDependencyRanges(JSON.stringify({ dependencies: { lodash: "^4.17.21", "left-pad": "*" } }));
788
793
  // { totalDependencies: 2, dependencies: [{ name: "lodash", rangeType: "caret", issues: [] }, { name: "left-pad", rangeType: "wildcard", issues: [...] }], duplicates: [], issues: [...] }
794
+
795
+ // List an SVG sprite sheet's <symbol> definitions with id, viewBox, and a ready-to-paste <use> snippet
796
+ import { extractSvgSpriteSymbols } from "@utilix-tech/sdk/code";
797
+ extractSvgSpriteSymbols('<svg><symbol id="icon-home" viewBox="0 0 24 24"></symbol></svg>');
798
+ // { symbolCount: 1, symbols: [{ id: "icon-home", viewBox: "0 0 24 24", width: null, height: null, usageSnippet: '<svg><use href="#icon-home"></use></svg>' }], skippedCount: 0 }
799
+
800
+ // Parse a commit message's trailer block (Co-authored-by, Signed-off-by, Fixes, etc.) into key/value pairs plus the remaining body
801
+ import { parseCommitTrailers } from "@utilix-tech/sdk/code";
802
+ parseCommitTrailers("Fix bug\n\nSigned-off-by: A <a@example.com>");
803
+ // { trailers: [{ key: "Signed-off-by", value: "A <a@example.com>" }], body: "Fix bug", hasTrailers: true }
804
+
805
+ // Extract Markdown footnote references and definitions, flagging unresolved references and unused definitions
806
+ import { extractMarkdownFootnotes } from "@utilix-tech/sdk/code";
807
+ extractMarkdownFootnotes("A claim[^1].\n\n[^1]: The source.");
808
+ // { definitionCount: 1, referenceCount: 1, definitions: [{ label: "1", text: "The source." }], unresolvedReferences: [], unusedDefinitions: [] }
789
809
  ```
790
810
 
791
811
  ---
@@ -943,9 +963,9 @@ inspectGifFrames(new Uint8Array(gifBytes));
943
963
  | `@utilix-tech/sdk/generators` | UUID v4/v7, ULID, passwords, strength check, entropy estimator, fake data, CSP nonce generator |
944
964
  | `@utilix-tech/sdk/time` | Date diff, timezone convert, cron parse, relative time |
945
965
  | `@utilix-tech/sdk/units` | Bytes, CSS px/rem, number bases, currency format, credit card/IBAN/barcode/ISBN validation, loan calculator, EMI calculator, compound/simple interest calculators, VAT/sales tax calculator, tip/bill split calculator, break-even point calculator, Rule of 72 calculator, savings goal calculator, ROI calculator, cash denomination/till calculator, payback period calculator, CD maturity calculator, debt-to-income ratio calculator, freelancer hourly rate calculator, debt snowball/avalanche payoff planner |
946
- | `@utilix-tech/sdk/network` | HTTP status codes, IP validation, country flags, geolocation URLs, HAR file parsing, User-Agent parsing, IPv6 address compress/expand, Permissions-Policy header builder, Client Hints header builder/parser, Content-Disposition header builder/parser, X-Content-Type-Options header builder/risk assessor, sitemap.xml validator, sitemap index splitter, Prefer header builder/parser (RFC 7240), Retry-After header builder/parser (RFC 9110), Priority header builder/parser (RFC 9218), WebSocket close code reference/lookup, Strict-Transport-Security (HSTS) header builder/parser |
966
+ | `@utilix-tech/sdk/network` | HTTP status codes, IP validation, country flags, geolocation URLs, HAR file parsing, User-Agent parsing, IPv6 address compress/expand, Permissions-Policy header builder, Client Hints header builder/parser, Content-Disposition header builder/parser, X-Content-Type-Options header builder/risk assessor, sitemap.xml validator, sitemap index splitter, Prefer header builder/parser (RFC 7240), Retry-After header builder/parser (RFC 9110), Priority header builder/parser (RFC 9218), WebSocket close code reference/lookup, Strict-Transport-Security (HSTS) header builder/parser, X-Robots-Tag header builder/parser, WebSocket frame opcode reference/lookup, robots meta tag builder/parser |
947
967
  | `@utilix-tech/sdk/api` | cURL build/parse, JWT decode/sign, JWKS parse, CORS headers, CSP header |
948
- | `@utilix-tech/sdk/code` | SQL format/minify, HTML format/minify, regex tester, GraphQL format, MIME type lookup, GitHub URL parsing, regex ReDoS detector, Conventional Commits linter, package.json exports field validator, package.json dependency range auditor |
968
+ | `@utilix-tech/sdk/code` | SQL format/minify, HTML format/minify, regex tester, GraphQL format, MIME type lookup, GitHub URL parsing, regex ReDoS detector, Conventional Commits linter, package.json exports field validator, package.json dependency range auditor, regex capture group/backreference visualizer, SVG sprite symbol extractor |
949
969
  | `@utilix-tech/sdk/color` | Hex/RGB/HSL/HSV/CMYK convert, palette generation, contrast check |
950
970
  | `@utilix-tech/sdk/css` | CSS gradient, box-shadow, border-radius, keyframe animation generators |
951
971
  | `@utilix-tech/sdk/misc` | SVG optimize/sanitize, file size format, Unicode inspector |
@@ -28,6 +28,7 @@ __export(network_exports, {
28
28
  buildRangeHeader: () => buildRangeHeader,
29
29
  buildReferrerPolicy: () => buildReferrerPolicy,
30
30
  buildRetryAfterHeader: () => buildRetryAfterHeader,
31
+ buildRobotsMetaTag: () => buildRobotsMetaTag,
31
32
  buildVaryHeader: () => buildVaryHeader,
32
33
  buildXContentTypeOptionsHeader: () => buildXContentTypeOptionsHeader,
33
34
  buildXRobotsTag: () => buildXRobotsTag,
@@ -65,6 +66,7 @@ __export(network_exports, {
65
66
  parsePreferHeader: () => parsePreferHeader,
66
67
  parsePriorityHeader: () => parsePriorityHeader,
67
68
  parseRetryAfterHeader: () => parseRetryAfterHeader,
69
+ parseRobotsMetaTag: () => parseRobotsMetaTag,
68
70
  parseUserAgent: () => parseUserAgent,
69
71
  parseVaryHeader: () => parseVaryHeader,
70
72
  parseXContentTypeOptionsHeader: () => parseXContentTypeOptionsHeader,
@@ -3407,5 +3409,76 @@ function lookupOpcode(opcode) {
3407
3409
  }
3408
3410
  return _describeOpcode(opcode);
3409
3411
  }
3412
+ function buildRobotsMetaTag(options) {
3413
+ const built = buildXRobotsTag({
3414
+ flags: options?.flags,
3415
+ maxSnippet: options?.maxSnippet,
3416
+ maxImagePreview: options?.maxImagePreview,
3417
+ maxVideoPreview: options?.maxVideoPreview,
3418
+ unavailableAfter: options?.unavailableAfter
3419
+ });
3420
+ if ("error" in built) return built;
3421
+ const name = options?.name?.trim() || "robots";
3422
+ return {
3423
+ content: built.header,
3424
+ name,
3425
+ tag: `<meta name="${name}" content="${built.header}">`,
3426
+ directives: built.directives,
3427
+ notes: built.notes,
3428
+ warnings: built.warnings
3429
+ };
3430
+ }
3431
+ var _ROBOTS_META_TAG_REGEX = /<meta\b[^>]*>/i;
3432
+ var _ROBOTS_META_NAME_ATTR_REGEX = /\bname\s*=\s*["']([^"']*)["']/i;
3433
+ var _ROBOTS_META_CONTENT_ATTR_REGEX = /\bcontent\s*=\s*["']([^"']*)["']/i;
3434
+ function parseRobotsMetaTag(raw) {
3435
+ if (!raw || raw.trim() === "") return { error: "Input is empty" };
3436
+ const trimmed = raw.trim();
3437
+ let name = "robots";
3438
+ let content = trimmed;
3439
+ const tagMatch = trimmed.match(_ROBOTS_META_TAG_REGEX);
3440
+ if (tagMatch) {
3441
+ const nameMatch = tagMatch[0].match(_ROBOTS_META_NAME_ATTR_REGEX);
3442
+ const contentMatch = tagMatch[0].match(_ROBOTS_META_CONTENT_ATTR_REGEX);
3443
+ if (!contentMatch) return { error: "Meta tag is missing a content attribute" };
3444
+ if (nameMatch) name = nameMatch[1].trim() || "robots";
3445
+ content = contentMatch[1];
3446
+ }
3447
+ const tokens = content.split(",").map((t) => t.trim()).filter((t) => t !== "");
3448
+ if (tokens.length === 0) return { error: "No directives found" };
3449
+ const flags = [];
3450
+ let maxSnippet;
3451
+ let maxImagePreview;
3452
+ let maxVideoPreview;
3453
+ let unavailableAfter;
3454
+ for (const token of tokens) {
3455
+ const eq = token.indexOf(":");
3456
+ const directiveName = (eq === -1 ? token : token.slice(0, eq)).trim().toLowerCase();
3457
+ const value = eq === -1 ? "" : token.slice(eq + 1).trim();
3458
+ if (eq === -1) {
3459
+ if (!_isXRobotsTagFlag(directiveName)) return { error: `Unrecognized directive "${token}"` };
3460
+ flags.push(directiveName);
3461
+ continue;
3462
+ }
3463
+ if (directiveName === "max-snippet") {
3464
+ const n = Number(value);
3465
+ if (value === "" || !Number.isInteger(n) || n < -1) return { error: `max-snippet value "${value}" is not a valid integer >= -1` };
3466
+ maxSnippet = n;
3467
+ } else if (directiveName === "max-image-preview") {
3468
+ if (!["none", "standard", "large"].includes(value)) return { error: `max-image-preview value "${value}" must be one of "none", "standard", "large"` };
3469
+ maxImagePreview = value;
3470
+ } else if (directiveName === "max-video-preview") {
3471
+ const n = Number(value);
3472
+ if (value === "" || !Number.isInteger(n) || n < -1) return { error: `max-video-preview value "${value}" is not a valid integer >= -1` };
3473
+ maxVideoPreview = n;
3474
+ } else if (directiveName === "unavailable_after") {
3475
+ if (value === "" || Number.isNaN(Date.parse(value))) return { error: `unavailable_after value "${value}" is not a valid, parseable date` };
3476
+ unavailableAfter = value;
3477
+ } else {
3478
+ return { error: `Unrecognized directive "${token}"` };
3479
+ }
3480
+ }
3481
+ return buildRobotsMetaTag({ flags, maxSnippet, maxImagePreview, maxVideoPreview, unavailableAfter, name });
3482
+ }
3410
3483
 
3411
- export { CLIENT_HINTS, DNS_RECORD_TYPES, HTTP_HEADERS, LINK_REL_VALUES, PERMISSIONS_POLICY_FEATURES, REFERRER_POLICY_VALUES, STATUS_CODES, X_CONTENT_TYPE_OPTIONS_HEADER, analyzeEmailHeaders, assessContentTypeRisk, buildAcceptLanguage, buildCacheControl, buildClientHints, buildContentDisposition, buildDnsQueryUrl, buildGeoUrl, buildHsts, buildLinkHeader, buildMapUrl, buildPermissionsPolicy, buildPreferHeader, buildPriorityHeader, buildRangeHeader, buildReferrerPolicy, buildRetryAfterHeader, buildVaryHeader, buildXContentTypeOptionsHeader, buildXRobotsTag, checkSetCookieHeader, countryCodeToFlag, extractMultipartBoundary, formatCoordinates, formatTtl, getByCategory, getHeader, getHeadersByCategory, getStatusByCategory, getStatusCode, isClientError, isServerError, isSuccess, isValidIp, isValidIpv4, isValidIpv6, listCloseCodes, listOpcodes, lookupCloseCode, lookupOpcode, network_exports, parseAcceptLanguage, parseClientHintHeaders, parseContentDisposition, parseContentRangeHeader, parseDnsResponse, parseGeoResponse, parseHar, parseHsts, parseIpv6Address, parseMultipartFormData, parsePermissionsPolicy, parsePreferHeader, parsePriorityHeader, parseRetryAfterHeader, parseUserAgent, parseVaryHeader, parseXContentTypeOptionsHeader, parseXRobotsTag, searchHeaders, searchStatusCodes, splitSitemap, statusCodeToText, typeNumberToLabel, validateDomain, validateHeaderName, validateHeaderValue, validateManifest, validateRobotsTxt, validateSitemap };
3484
+ export { CLIENT_HINTS, DNS_RECORD_TYPES, HTTP_HEADERS, LINK_REL_VALUES, PERMISSIONS_POLICY_FEATURES, REFERRER_POLICY_VALUES, STATUS_CODES, X_CONTENT_TYPE_OPTIONS_HEADER, analyzeEmailHeaders, assessContentTypeRisk, buildAcceptLanguage, buildCacheControl, buildClientHints, buildContentDisposition, buildDnsQueryUrl, buildGeoUrl, buildHsts, buildLinkHeader, buildMapUrl, buildPermissionsPolicy, buildPreferHeader, buildPriorityHeader, buildRangeHeader, buildReferrerPolicy, buildRetryAfterHeader, buildRobotsMetaTag, buildVaryHeader, buildXContentTypeOptionsHeader, buildXRobotsTag, checkSetCookieHeader, countryCodeToFlag, extractMultipartBoundary, formatCoordinates, formatTtl, getByCategory, getHeader, getHeadersByCategory, getStatusByCategory, getStatusCode, isClientError, isServerError, isSuccess, isValidIp, isValidIpv4, isValidIpv6, listCloseCodes, listOpcodes, lookupCloseCode, lookupOpcode, network_exports, parseAcceptLanguage, parseClientHintHeaders, parseContentDisposition, parseContentRangeHeader, parseDnsResponse, parseGeoResponse, parseHar, parseHsts, parseIpv6Address, parseMultipartFormData, parsePermissionsPolicy, parsePreferHeader, parsePriorityHeader, parseRetryAfterHeader, parseRobotsMetaTag, parseUserAgent, parseVaryHeader, parseXContentTypeOptionsHeader, parseXRobotsTag, searchHeaders, searchStatusCodes, splitSitemap, statusCodeToText, typeNumberToLabel, validateDomain, validateHeaderName, validateHeaderValue, validateManifest, validateRobotsTxt, validateSitemap };
@@ -24,6 +24,8 @@ __export(code_exports, {
24
24
  detectRedos: () => detectRedos,
25
25
  envToExport: () => envToExport,
26
26
  envToJson: () => envToJson,
27
+ extractMarkdownFootnotes: () => extractMarkdownFootnotes,
28
+ extractSvgSpriteSymbols: () => extractSvgSpriteSymbols,
27
29
  formatCss: () => formatCss,
28
30
  formatGql: () => formatGql,
29
31
  formatHtml: () => formatHtml,
@@ -41,6 +43,7 @@ __export(code_exports, {
41
43
  minifyJs: () => minifyJs,
42
44
  minifySql: () => minifySql,
43
45
  normalizeRef: () => normalizeRef,
46
+ parseCommitTrailers: () => parseCommitTrailers,
44
47
  parseDockerImage: () => parseDockerImage,
45
48
  parseEnv: () => parseEnv,
46
49
  parseGitCommand: () => parseGitCommand,
@@ -3594,5 +3597,122 @@ function analyzeRegexGroups(pattern) {
3594
3597
  }
3595
3598
  return { pattern, valid, ...compileError ? { compileError } : {}, groups, backreferences, issues };
3596
3599
  }
3600
+ var SVG_SYMBOL_TAG_REGEX = /<symbol\b([^>]*)>/gi;
3601
+ function extractSvgAttr(attrs, name) {
3602
+ const match = attrs.match(new RegExp(`\\s${name}\\s*=\\s*["']([^"']*)["']`, "i"));
3603
+ return match ? match[1] : null;
3604
+ }
3605
+ function extractSvgSpriteSymbols(svg) {
3606
+ const trimmed = svg.trim();
3607
+ if (!trimmed) return { error: "Empty input" };
3608
+ const symbols = [];
3609
+ let skippedCount = 0;
3610
+ for (const match of trimmed.matchAll(SVG_SYMBOL_TAG_REGEX)) {
3611
+ const attrs = match[1];
3612
+ const id = extractSvgAttr(attrs, "id");
3613
+ if (!id) {
3614
+ skippedCount++;
3615
+ continue;
3616
+ }
3617
+ symbols.push({
3618
+ id,
3619
+ viewBox: extractSvgAttr(attrs, "viewBox"),
3620
+ width: extractSvgAttr(attrs, "width"),
3621
+ height: extractSvgAttr(attrs, "height"),
3622
+ usageSnippet: `<svg><use href="#${id}"></use></svg>`
3623
+ });
3624
+ }
3625
+ if (symbols.length === 0 && skippedCount === 0) {
3626
+ return { error: "No <symbol> elements found" };
3627
+ }
3628
+ return { symbolCount: symbols.length, symbols, skippedCount };
3629
+ }
3630
+ var TRAILER_LINE_REGEX = /^([A-Za-z][A-Za-z0-9-]*): (.+)$/;
3631
+ var TRAILER_CONTINUATION_REGEX = /^[ \t]+\S/;
3632
+ function parseCommitTrailers(message) {
3633
+ const lines = message.replace(/\r\n/g, "\n").split("\n");
3634
+ while (lines.length > 0 && lines[lines.length - 1].trim() === "") lines.pop();
3635
+ if (lines.length === 0) return { error: "Empty input" };
3636
+ let start = 0;
3637
+ for (let i = lines.length - 1; i >= 0; i--) {
3638
+ if (lines[i].trim() === "") {
3639
+ start = i + 1;
3640
+ break;
3641
+ }
3642
+ }
3643
+ const paragraph = lines.slice(start);
3644
+ const trailers = [];
3645
+ let valid = true;
3646
+ for (const line of paragraph) {
3647
+ const m = line.match(TRAILER_LINE_REGEX);
3648
+ if (m) {
3649
+ trailers.push({ key: m[1], value: m[2].trim() });
3650
+ } else if (TRAILER_CONTINUATION_REGEX.test(line) && trailers.length > 0) {
3651
+ trailers[trailers.length - 1].value += " " + line.trim();
3652
+ } else {
3653
+ valid = false;
3654
+ break;
3655
+ }
3656
+ }
3657
+ if (!valid || trailers.length === 0) {
3658
+ return { trailers: [], body: lines.join("\n").trim(), hasTrailers: false };
3659
+ }
3660
+ const body = lines.slice(0, start).join("\n").trim();
3661
+ return { trailers, body, hasTrailers: true };
3662
+ }
3663
+ var FOOTNOTE_DEFINITION_LINE_REGEX = /^\[\^([^\]]+)\]:\s?(.*)$/;
3664
+ var FOOTNOTE_CONTINUATION_REGEX = /^(?: {4}|\t)/;
3665
+ var FOOTNOTE_REFERENCE_REGEX = /\[\^([^\]]+)\]/g;
3666
+ function extractMarkdownFootnotes(markdown) {
3667
+ const trimmed = markdown.trim();
3668
+ if (!trimmed) return { error: "Empty input" };
3669
+ if (!trimmed.includes("[^")) return { error: "No footnote references or definitions found" };
3670
+ const lines = markdown.replace(/\r\n/g, "\n").split("\n");
3671
+ const definitions = [];
3672
+ const definedLabels = /* @__PURE__ */ new Set();
3673
+ const consumed = new Array(lines.length).fill(false);
3674
+ let i = 0;
3675
+ while (i < lines.length) {
3676
+ const match = lines[i].match(FOOTNOTE_DEFINITION_LINE_REGEX);
3677
+ if (!match) {
3678
+ i++;
3679
+ continue;
3680
+ }
3681
+ const label = match[1];
3682
+ const textLines = [match[2]];
3683
+ consumed[i] = true;
3684
+ let j = i + 1;
3685
+ while (j < lines.length && (FOOTNOTE_CONTINUATION_REGEX.test(lines[j]) || lines[j].trim() === "" && j + 1 < lines.length && FOOTNOTE_CONTINUATION_REGEX.test(lines[j + 1]))) {
3686
+ textLines.push(lines[j].trim() === "" ? "" : lines[j].replace(FOOTNOTE_CONTINUATION_REGEX, ""));
3687
+ consumed[j] = true;
3688
+ j++;
3689
+ }
3690
+ if (!definedLabels.has(label)) {
3691
+ definedLabels.add(label);
3692
+ definitions.push({ label, text: textLines.join("\n").trim() });
3693
+ }
3694
+ i = j;
3695
+ }
3696
+ const referenceScanText = lines.filter((_, idx) => !consumed[idx]).join("\n");
3697
+ const refOrder = [];
3698
+ const refCounts = /* @__PURE__ */ new Map();
3699
+ for (const m of referenceScanText.matchAll(FOOTNOTE_REFERENCE_REGEX)) {
3700
+ const label = m[1];
3701
+ if (!refCounts.has(label)) {
3702
+ refCounts.set(label, 0);
3703
+ refOrder.push(label);
3704
+ }
3705
+ refCounts.set(label, (refCounts.get(label) ?? 0) + 1);
3706
+ }
3707
+ const references = refOrder.map((label) => ({ label, count: refCounts.get(label) ?? 0 }));
3708
+ const referencedSet = new Set(refOrder);
3709
+ const unresolvedReferences = refOrder.filter((label) => !definedLabels.has(label));
3710
+ const unusedDefinitions = definitions.filter((d) => !referencedSet.has(d.label)).map((d) => d.label);
3711
+ const referenceCount = refOrder.reduce((sum, label) => sum + (refCounts.get(label) ?? 0), 0);
3712
+ if (definitions.length === 0 && references.length === 0) {
3713
+ return { error: "No footnote references or definitions found" };
3714
+ }
3715
+ return { definitionCount: definitions.length, referenceCount, definitions, references, unresolvedReferences, unusedDefinitions };
3716
+ }
3597
3717
 
3598
- export { ALL_FLAGS, CHEATSHEET, DEFAULT_COMMIT_TYPES, MIME_TABLE, OPERATIONS, SQL_DEFAULT_OPTIONS, analyzeRegexGroups, auditDependencyRanges, buildDockerPull, buildDockerRun, buildGitCommand, code_exports, collapseHtmlWhitespace, collapseJsWhitespace, countProperties, countRules, detectDialect, detectOperationType, detectRedos, envToExport, envToJson, formatCss, formatGql, formatHtml, formatSql, getEndpointsByTag, getHtmlStats, getJsStats, getMethodColor, isValidTag, lintConventionalCommit, lookupMime, minifyCss, minifyGql, minifyHtml, minifyJs, minifySql, normalizeRef, parseDockerImage, parseEnv, parseGitCommand, parseGithubUrl, parseSpec, removeConsoleCalls, removeEmptyAttributes, removeHtmlComments, removeJsComments, removeRedundantAttributes, searchCheatsheet, searchEndpoints, splitStatements, testGitignorePatterns, testPattern, testRegex, validateEditorConfig, validateEnvKey, validatePackageExports, validateTsconfig };
3718
+ export { ALL_FLAGS, CHEATSHEET, DEFAULT_COMMIT_TYPES, MIME_TABLE, OPERATIONS, SQL_DEFAULT_OPTIONS, analyzeRegexGroups, auditDependencyRanges, buildDockerPull, buildDockerRun, buildGitCommand, code_exports, collapseHtmlWhitespace, collapseJsWhitespace, countProperties, countRules, detectDialect, detectOperationType, detectRedos, envToExport, envToJson, extractMarkdownFootnotes, extractSvgSpriteSymbols, formatCss, formatGql, formatHtml, formatSql, getEndpointsByTag, getHtmlStats, getJsStats, getMethodColor, isValidTag, lintConventionalCommit, lookupMime, minifyCss, minifyGql, minifyHtml, minifyJs, minifySql, normalizeRef, parseCommitTrailers, parseDockerImage, parseEnv, parseGitCommand, parseGithubUrl, parseSpec, removeConsoleCalls, removeEmptyAttributes, removeHtmlComments, removeJsComments, removeRedundantAttributes, searchCheatsheet, searchEndpoints, splitStatements, testGitignorePatterns, testPattern, testRegex, validateEditorConfig, validateEnvKey, validatePackageExports, validateTsconfig };
@@ -27,6 +27,9 @@
27
27
  * - package-json-exports-validator (validatePackageExports)
28
28
  * - package-json-dependency-auditor (auditDependencyRanges)
29
29
  * - regex-groups (analyzeRegexGroups)
30
+ * - svg-sprite-symbol-extractor (extractSvgSpriteSymbols)
31
+ * - git-commit-trailer-parser (parseCommitTrailers)
32
+ * - markdown-footnote-extractor (extractMarkdownFootnotes)
30
33
  */
31
34
  type RegexFlag = 'g' | 'i' | 'm' | 's' | 'u';
32
35
  declare const ALL_FLAGS: RegexFlag[];
@@ -547,12 +550,86 @@ interface RegexGroupAnalysis {
547
550
  * (plain-English breakdown).
548
551
  */
549
552
  declare function analyzeRegexGroups(pattern: string): RegexGroupAnalysis;
553
+ interface SvgSpriteSymbol {
554
+ id: string;
555
+ viewBox: string | null;
556
+ width: string | null;
557
+ height: string | null;
558
+ usageSnippet: string;
559
+ }
560
+ interface SvgSpriteResult {
561
+ symbolCount: number;
562
+ symbols: SvgSpriteSymbol[];
563
+ skippedCount: number;
564
+ }
565
+ /**
566
+ * Parse an SVG sprite sheet's <symbol> definitions and list each one's id,
567
+ * viewBox, width, and height, alongside a ready-to-paste
568
+ * `<use href="#id"></use>` usage snippet. A symbol with no id is skipped
569
+ * (counted in skippedCount) since it can't be referenced by a `<use>`
570
+ * element at all. Pure regex-based parsing over the raw markup, no DOM/XML
571
+ * parser dependency, matching the SVG Viewer tool's parsing style.
572
+ */
573
+ declare function extractSvgSpriteSymbols(svg: string): SvgSpriteResult | {
574
+ error: string;
575
+ };
576
+ interface CommitTrailer {
577
+ key: string;
578
+ value: string;
579
+ }
580
+ interface CommitTrailerResult {
581
+ trailers: CommitTrailer[];
582
+ body: string;
583
+ hasTrailers: boolean;
584
+ }
585
+ /**
586
+ * Parse a commit message's trailer block (Co-authored-by, Signed-off-by,
587
+ * Fixes, Reviewed-by, etc.) per git's RFC 822-style trailer convention
588
+ * (see `git-interpret-trailers`): the last paragraph of the message, where
589
+ * every line is either a `Key: value` pair or an indented continuation of
590
+ * the previous trailer's value. If the last paragraph doesn't consist
591
+ * entirely of trailer-shaped lines, no trailers are returned and the whole
592
+ * message is treated as body. This does not implement git's 25%-of-lines
593
+ * heuristic for a mixed last paragraph; it requires every line to match.
594
+ */
595
+ declare function parseCommitTrailers(message: string): CommitTrailerResult | {
596
+ error: string;
597
+ };
598
+ interface MarkdownFootnoteDefinition {
599
+ label: string;
600
+ text: string;
601
+ }
602
+ interface MarkdownFootnoteReference {
603
+ label: string;
604
+ count: number;
605
+ }
606
+ interface MarkdownFootnoteResult {
607
+ definitionCount: number;
608
+ referenceCount: number;
609
+ definitions: MarkdownFootnoteDefinition[];
610
+ references: MarkdownFootnoteReference[];
611
+ unresolvedReferences: string[];
612
+ unusedDefinitions: string[];
613
+ }
614
+ /**
615
+ * Extract every Markdown-Extra-style footnote reference (`[^label]`) and
616
+ * definition (`[^label]: text`, with 4-space/tab-indented continuation
617
+ * lines) from a document, then flag references with no matching definition
618
+ * and definitions that are never referenced. A `[^label]` occurring inside
619
+ * a definition's own continuation lines is not counted as a separate
620
+ * reference, since that text is part of the definition itself.
621
+ */
622
+ declare function extractMarkdownFootnotes(markdown: string): MarkdownFootnoteResult | {
623
+ error: string;
624
+ };
550
625
 
551
626
  declare const code_ALL_FLAGS: typeof ALL_FLAGS;
552
627
  type code_ApiEndpoint = ApiEndpoint;
553
628
  type code_ApiInfo = ApiInfo;
554
629
  declare const code_CHEATSHEET: typeof CHEATSHEET;
555
630
  type code_CheatsheetEntry = CheatsheetEntry;
631
+ type code_CommitTrailer = CommitTrailer;
632
+ type code_CommitTrailerResult = CommitTrailerResult;
556
633
  type code_ConventionalCommitFinding = ConventionalCommitFinding;
557
634
  type code_ConventionalCommitFooter = ConventionalCommitFooter;
558
635
  type code_ConventionalCommitOptions = ConventionalCommitOptions;
@@ -590,6 +667,9 @@ type code_HtmlMinifyResult = HtmlMinifyResult;
590
667
  type code_JsMinifyOptions = JsMinifyOptions;
591
668
  type code_JsMinifyResult = JsMinifyResult;
592
669
  declare const code_MIME_TABLE: typeof MIME_TABLE;
670
+ type code_MarkdownFootnoteDefinition = MarkdownFootnoteDefinition;
671
+ type code_MarkdownFootnoteReference = MarkdownFootnoteReference;
672
+ type code_MarkdownFootnoteResult = MarkdownFootnoteResult;
593
673
  type code_MatchResult = MatchResult;
594
674
  type code_MimeEntry = MimeEntry;
595
675
  type code_MimeLookupResult = MimeLookupResult;
@@ -612,6 +692,8 @@ type code_Segment = Segment;
612
692
  type code_SpecVersion = SpecVersion;
613
693
  type code_SqlDialect = SqlDialect;
614
694
  type code_SqlFormatOptions = SqlFormatOptions;
695
+ type code_SvgSpriteResult = SvgSpriteResult;
696
+ type code_SvgSpriteSymbol = SvgSpriteSymbol;
615
697
  type code_TestPatternResult = TestPatternResult;
616
698
  type code_TsconfigIssue = TsconfigIssue;
617
699
  type code_TsconfigValidationResult = TsconfigValidationResult;
@@ -629,6 +711,8 @@ declare const code_detectOperationType: typeof detectOperationType;
629
711
  declare const code_detectRedos: typeof detectRedos;
630
712
  declare const code_envToExport: typeof envToExport;
631
713
  declare const code_envToJson: typeof envToJson;
714
+ declare const code_extractMarkdownFootnotes: typeof extractMarkdownFootnotes;
715
+ declare const code_extractSvgSpriteSymbols: typeof extractSvgSpriteSymbols;
632
716
  declare const code_formatCss: typeof formatCss;
633
717
  declare const code_formatGql: typeof formatGql;
634
718
  declare const code_formatHtml: typeof formatHtml;
@@ -646,6 +730,7 @@ declare const code_minifyHtml: typeof minifyHtml;
646
730
  declare const code_minifyJs: typeof minifyJs;
647
731
  declare const code_minifySql: typeof minifySql;
648
732
  declare const code_normalizeRef: typeof normalizeRef;
733
+ declare const code_parseCommitTrailers: typeof parseCommitTrailers;
649
734
  declare const code_parseDockerImage: typeof parseDockerImage;
650
735
  declare const code_parseEnv: typeof parseEnv;
651
736
  declare const code_parseGitCommand: typeof parseGitCommand;
@@ -667,7 +752,7 @@ declare const code_validateEnvKey: typeof validateEnvKey;
667
752
  declare const code_validatePackageExports: typeof validatePackageExports;
668
753
  declare const code_validateTsconfig: typeof validateTsconfig;
669
754
  declare namespace code {
670
- export { code_ALL_FLAGS as ALL_FLAGS, type code_ApiEndpoint as ApiEndpoint, type code_ApiInfo as ApiInfo, code_CHEATSHEET as CHEATSHEET, type code_CheatsheetEntry as CheatsheetEntry, type code_ConventionalCommitFinding as ConventionalCommitFinding, type code_ConventionalCommitFooter as ConventionalCommitFooter, type code_ConventionalCommitOptions as ConventionalCommitOptions, type code_ConventionalCommitParsed as ConventionalCommitParsed, type code_ConventionalCommitResult as ConventionalCommitResult, type code_ConventionalCommitSeverity as ConventionalCommitSeverity, type code_CssResult as CssResult, code_DEFAULT_COMMIT_TYPES as DEFAULT_COMMIT_TYPES, type code_DependencyAuditDuplicate as DependencyAuditDuplicate, type code_DependencyAuditEntry as DependencyAuditEntry, type code_DependencyAuditIssue as DependencyAuditIssue, type code_DependencyAuditResult as DependencyAuditResult, type code_DependencyRangeType as DependencyRangeType, type code_DependencySection as DependencySection, type code_DockerImageRef as DockerImageRef, type code_EditorConfigIssue as EditorConfigIssue, type code_EditorConfigProperty as EditorConfigProperty, type code_EditorConfigSection as EditorConfigSection, type code_EditorConfigValidationResult as EditorConfigValidationResult, type code_EnvEntry as EnvEntry, type code_EnvParseResult as EnvParseResult, type code_ExportsIssue as ExportsIssue, type code_ExportsShape as ExportsShape, type code_ExportsValidationResult as ExportsValidationResult, type code_GitCommandConfig as GitCommandConfig, type code_GitCommandResult as GitCommandResult, type code_GitOperation as GitOperation, type code_GithubUrlInfo as GithubUrlInfo, type code_GithubUrlType as GithubUrlType, type code_GitignoreTestResult as GitignoreTestResult, type code_GqlFormatResult as GqlFormatResult, type code_HtmlFormatResult as HtmlFormatResult, type code_HtmlMinifyOptions as HtmlMinifyOptions, type code_HtmlMinifyResult as HtmlMinifyResult, type code_JsMinifyOptions as JsMinifyOptions, type code_JsMinifyResult as JsMinifyResult, code_MIME_TABLE as MIME_TABLE, type code_MatchResult as MatchResult, type code_MimeEntry as MimeEntry, type code_MimeLookupResult as MimeLookupResult, code_OPERATIONS as OPERATIONS, type code_ParsedSpec as ParsedSpec, type code_RedosFinding as RedosFinding, type code_RedosResult as RedosResult, type code_RedosSeverity as RedosSeverity, type code_RegexBackreferenceInfo as RegexBackreferenceInfo, type code_RegexError as RegexError, type code_RegexFlag as RegexFlag, type code_RegexGroupAnalysis as RegexGroupAnalysis, type code_RegexGroupInfo as RegexGroupInfo, type code_RegexGroupIssue as RegexGroupIssue, type code_RegexMatch as RegexMatch, type code_RegexResult as RegexResult, type code_RegexSuccess as RegexSuccess, code_SQL_DEFAULT_OPTIONS as SQL_DEFAULT_OPTIONS, type code_Segment as Segment, type code_SpecVersion as SpecVersion, type code_SqlDialect as SqlDialect, type code_SqlFormatOptions as SqlFormatOptions, type code_TestPatternResult as TestPatternResult, type code_TsconfigIssue as TsconfigIssue, type code_TsconfigValidationResult as TsconfigValidationResult, code_analyzeRegexGroups as analyzeRegexGroups, code_auditDependencyRanges as auditDependencyRanges, code_buildDockerPull as buildDockerPull, code_buildDockerRun as buildDockerRun, code_buildGitCommand as buildGitCommand, code_collapseHtmlWhitespace as collapseHtmlWhitespace, code_collapseJsWhitespace as collapseJsWhitespace, code_countProperties as countProperties, code_countRules as countRules, code_detectDialect as detectDialect, code_detectOperationType as detectOperationType, code_detectRedos as detectRedos, code_envToExport as envToExport, code_envToJson as envToJson, code_formatCss as formatCss, code_formatGql as formatGql, code_formatHtml as formatHtml, code_formatSql as formatSql, code_getEndpointsByTag as getEndpointsByTag, code_getHtmlStats as getHtmlStats, code_getJsStats as getJsStats, code_getMethodColor as getMethodColor, code_isValidTag as isValidTag, code_lintConventionalCommit as lintConventionalCommit, code_lookupMime as lookupMime, code_minifyCss as minifyCss, code_minifyGql as minifyGql, code_minifyHtml as minifyHtml, code_minifyJs as minifyJs, code_minifySql as minifySql, code_normalizeRef as normalizeRef, code_parseDockerImage as parseDockerImage, code_parseEnv as parseEnv, code_parseGitCommand as parseGitCommand, code_parseGithubUrl as parseGithubUrl, code_parseSpec as parseSpec, code_removeConsoleCalls as removeConsoleCalls, code_removeEmptyAttributes as removeEmptyAttributes, code_removeHtmlComments as removeHtmlComments, code_removeJsComments as removeJsComments, code_removeRedundantAttributes as removeRedundantAttributes, code_searchCheatsheet as searchCheatsheet, code_searchEndpoints as searchEndpoints, code_splitStatements as splitStatements, code_testGitignorePatterns as testGitignorePatterns, code_testPattern as testPattern, code_testRegex as testRegex, code_validateEditorConfig as validateEditorConfig, code_validateEnvKey as validateEnvKey, code_validatePackageExports as validatePackageExports, code_validateTsconfig as validateTsconfig };
755
+ export { code_ALL_FLAGS as ALL_FLAGS, type code_ApiEndpoint as ApiEndpoint, type code_ApiInfo as ApiInfo, code_CHEATSHEET as CHEATSHEET, type code_CheatsheetEntry as CheatsheetEntry, type code_CommitTrailer as CommitTrailer, type code_CommitTrailerResult as CommitTrailerResult, type code_ConventionalCommitFinding as ConventionalCommitFinding, type code_ConventionalCommitFooter as ConventionalCommitFooter, type code_ConventionalCommitOptions as ConventionalCommitOptions, type code_ConventionalCommitParsed as ConventionalCommitParsed, type code_ConventionalCommitResult as ConventionalCommitResult, type code_ConventionalCommitSeverity as ConventionalCommitSeverity, type code_CssResult as CssResult, code_DEFAULT_COMMIT_TYPES as DEFAULT_COMMIT_TYPES, type code_DependencyAuditDuplicate as DependencyAuditDuplicate, type code_DependencyAuditEntry as DependencyAuditEntry, type code_DependencyAuditIssue as DependencyAuditIssue, type code_DependencyAuditResult as DependencyAuditResult, type code_DependencyRangeType as DependencyRangeType, type code_DependencySection as DependencySection, type code_DockerImageRef as DockerImageRef, type code_EditorConfigIssue as EditorConfigIssue, type code_EditorConfigProperty as EditorConfigProperty, type code_EditorConfigSection as EditorConfigSection, type code_EditorConfigValidationResult as EditorConfigValidationResult, type code_EnvEntry as EnvEntry, type code_EnvParseResult as EnvParseResult, type code_ExportsIssue as ExportsIssue, type code_ExportsShape as ExportsShape, type code_ExportsValidationResult as ExportsValidationResult, type code_GitCommandConfig as GitCommandConfig, type code_GitCommandResult as GitCommandResult, type code_GitOperation as GitOperation, type code_GithubUrlInfo as GithubUrlInfo, type code_GithubUrlType as GithubUrlType, type code_GitignoreTestResult as GitignoreTestResult, type code_GqlFormatResult as GqlFormatResult, type code_HtmlFormatResult as HtmlFormatResult, type code_HtmlMinifyOptions as HtmlMinifyOptions, type code_HtmlMinifyResult as HtmlMinifyResult, type code_JsMinifyOptions as JsMinifyOptions, type code_JsMinifyResult as JsMinifyResult, code_MIME_TABLE as MIME_TABLE, type code_MarkdownFootnoteDefinition as MarkdownFootnoteDefinition, type code_MarkdownFootnoteReference as MarkdownFootnoteReference, type code_MarkdownFootnoteResult as MarkdownFootnoteResult, type code_MatchResult as MatchResult, type code_MimeEntry as MimeEntry, type code_MimeLookupResult as MimeLookupResult, code_OPERATIONS as OPERATIONS, type code_ParsedSpec as ParsedSpec, type code_RedosFinding as RedosFinding, type code_RedosResult as RedosResult, type code_RedosSeverity as RedosSeverity, type code_RegexBackreferenceInfo as RegexBackreferenceInfo, type code_RegexError as RegexError, type code_RegexFlag as RegexFlag, type code_RegexGroupAnalysis as RegexGroupAnalysis, type code_RegexGroupInfo as RegexGroupInfo, type code_RegexGroupIssue as RegexGroupIssue, type code_RegexMatch as RegexMatch, type code_RegexResult as RegexResult, type code_RegexSuccess as RegexSuccess, code_SQL_DEFAULT_OPTIONS as SQL_DEFAULT_OPTIONS, type code_Segment as Segment, type code_SpecVersion as SpecVersion, type code_SqlDialect as SqlDialect, type code_SqlFormatOptions as SqlFormatOptions, type code_SvgSpriteResult as SvgSpriteResult, type code_SvgSpriteSymbol as SvgSpriteSymbol, type code_TestPatternResult as TestPatternResult, type code_TsconfigIssue as TsconfigIssue, type code_TsconfigValidationResult as TsconfigValidationResult, code_analyzeRegexGroups as analyzeRegexGroups, code_auditDependencyRanges as auditDependencyRanges, code_buildDockerPull as buildDockerPull, code_buildDockerRun as buildDockerRun, code_buildGitCommand as buildGitCommand, code_collapseHtmlWhitespace as collapseHtmlWhitespace, code_collapseJsWhitespace as collapseJsWhitespace, code_countProperties as countProperties, code_countRules as countRules, code_detectDialect as detectDialect, code_detectOperationType as detectOperationType, code_detectRedos as detectRedos, code_envToExport as envToExport, code_envToJson as envToJson, code_extractMarkdownFootnotes as extractMarkdownFootnotes, code_extractSvgSpriteSymbols as extractSvgSpriteSymbols, code_formatCss as formatCss, code_formatGql as formatGql, code_formatHtml as formatHtml, code_formatSql as formatSql, code_getEndpointsByTag as getEndpointsByTag, code_getHtmlStats as getHtmlStats, code_getJsStats as getJsStats, code_getMethodColor as getMethodColor, code_isValidTag as isValidTag, code_lintConventionalCommit as lintConventionalCommit, code_lookupMime as lookupMime, code_minifyCss as minifyCss, code_minifyGql as minifyGql, code_minifyHtml as minifyHtml, code_minifyJs as minifyJs, code_minifySql as minifySql, code_normalizeRef as normalizeRef, code_parseCommitTrailers as parseCommitTrailers, code_parseDockerImage as parseDockerImage, code_parseEnv as parseEnv, code_parseGitCommand as parseGitCommand, code_parseGithubUrl as parseGithubUrl, code_parseSpec as parseSpec, code_removeConsoleCalls as removeConsoleCalls, code_removeEmptyAttributes as removeEmptyAttributes, code_removeHtmlComments as removeHtmlComments, code_removeJsComments as removeJsComments, code_removeRedundantAttributes as removeRedundantAttributes, code_searchCheatsheet as searchCheatsheet, code_searchEndpoints as searchEndpoints, code_splitStatements as splitStatements, code_testGitignorePatterns as testGitignorePatterns, code_testPattern as testPattern, code_testRegex as testRegex, code_validateEditorConfig as validateEditorConfig, code_validateEnvKey as validateEnvKey, code_validatePackageExports as validatePackageExports, code_validateTsconfig as validateTsconfig };
671
756
  }
672
757
 
673
- export { type RegexFlag as $, ALL_FLAGS as A, type GitCommandResult as B, CHEATSHEET as C, DEFAULT_COMMIT_TYPES as D, type EditorConfigIssue as E, type GitOperation as F, type GitCommandConfig as G, type GithubUrlInfo as H, type GithubUrlType as I, type GitignoreTestResult as J, type GqlFormatResult as K, type HtmlFormatResult as L, type HtmlMinifyOptions as M, type HtmlMinifyResult as N, type JsMinifyOptions as O, type JsMinifyResult as P, MIME_TABLE as Q, type MatchResult as R, type MimeEntry as S, type MimeLookupResult as T, OPERATIONS as U, type ParsedSpec as V, type RedosFinding as W, type RedosResult as X, type RedosSeverity as Y, type RegexBackreferenceInfo as Z, type RegexError as _, type ApiEndpoint as a, validatePackageExports as a$, type RegexGroupAnalysis as a0, type RegexGroupInfo as a1, type RegexGroupIssue as a2, type RegexMatch as a3, type RegexResult as a4, type RegexSuccess as a5, SQL_DEFAULT_OPTIONS as a6, type Segment as a7, type SpecVersion as a8, type SqlDialect as a9, isValidTag as aA, lintConventionalCommit as aB, lookupMime as aC, minifyCss as aD, minifyGql as aE, minifyHtml as aF, minifyJs as aG, minifySql as aH, normalizeRef as aI, parseDockerImage as aJ, parseEnv as aK, parseGitCommand as aL, parseGithubUrl as aM, parseSpec as aN, removeConsoleCalls as aO, removeEmptyAttributes as aP, removeHtmlComments as aQ, removeJsComments as aR, removeRedundantAttributes as aS, searchCheatsheet as aT, searchEndpoints as aU, splitStatements as aV, testGitignorePatterns as aW, testPattern as aX, testRegex as aY, validateEditorConfig as aZ, validateEnvKey as a_, type SqlFormatOptions as aa, type TestPatternResult as ab, type TsconfigIssue as ac, type TsconfigValidationResult as ad, analyzeRegexGroups as ae, auditDependencyRanges as af, buildDockerPull as ag, buildDockerRun as ah, buildGitCommand as ai, collapseHtmlWhitespace as aj, collapseJsWhitespace as ak, countProperties as al, countRules as am, detectDialect as an, detectOperationType as ao, detectRedos as ap, envToExport as aq, envToJson as ar, formatCss as as, formatGql as at, formatHtml as au, formatSql as av, getEndpointsByTag as aw, getHtmlStats as ax, getJsStats as ay, getMethodColor as az, type ApiInfo as b, validateTsconfig as b0, code as c, type CheatsheetEntry as d, type ConventionalCommitFinding as e, type ConventionalCommitFooter as f, type ConventionalCommitOptions as g, type ConventionalCommitParsed as h, type ConventionalCommitResult as i, type ConventionalCommitSeverity as j, type CssResult as k, type DependencyAuditDuplicate as l, type DependencyAuditEntry as m, type DependencyAuditIssue as n, type DependencyAuditResult as o, type DependencyRangeType as p, type DependencySection as q, type DockerImageRef as r, type EditorConfigProperty as s, type EditorConfigSection as t, type EditorConfigValidationResult as u, type EnvEntry as v, type EnvParseResult as w, type ExportsIssue as x, type ExportsShape as y, type ExportsValidationResult as z };
758
+ export { type RedosFinding as $, ALL_FLAGS as A, type ExportsShape as B, CHEATSHEET as C, DEFAULT_COMMIT_TYPES as D, type EditorConfigIssue as E, type ExportsValidationResult as F, type GitCommandConfig as G, type GitCommandResult as H, type GitOperation as I, type GithubUrlInfo as J, type GithubUrlType as K, type GitignoreTestResult as L, type GqlFormatResult as M, type HtmlFormatResult as N, type HtmlMinifyOptions as O, type HtmlMinifyResult as P, type JsMinifyOptions as Q, type JsMinifyResult as R, MIME_TABLE as S, type MarkdownFootnoteDefinition as T, type MarkdownFootnoteReference as U, type MarkdownFootnoteResult as V, type MatchResult as W, type MimeEntry as X, type MimeLookupResult as Y, OPERATIONS as Z, type ParsedSpec as _, type ApiEndpoint as a, removeJsComments as a$, type RedosResult as a0, type RedosSeverity as a1, type RegexBackreferenceInfo as a2, type RegexError as a3, type RegexFlag as a4, type RegexGroupAnalysis as a5, type RegexGroupInfo as a6, type RegexGroupIssue as a7, type RegexMatch as a8, type RegexResult as a9, extractSvgSpriteSymbols as aA, formatCss as aB, formatGql as aC, formatHtml as aD, formatSql as aE, getEndpointsByTag as aF, getHtmlStats as aG, getJsStats as aH, getMethodColor as aI, isValidTag as aJ, lintConventionalCommit as aK, lookupMime as aL, minifyCss as aM, minifyGql as aN, minifyHtml as aO, minifyJs as aP, minifySql as aQ, normalizeRef as aR, parseCommitTrailers as aS, parseDockerImage as aT, parseEnv as aU, parseGitCommand as aV, parseGithubUrl as aW, parseSpec as aX, removeConsoleCalls as aY, removeEmptyAttributes as aZ, removeHtmlComments as a_, type RegexSuccess as aa, SQL_DEFAULT_OPTIONS as ab, type Segment as ac, type SpecVersion as ad, type SqlDialect as ae, type SqlFormatOptions as af, type SvgSpriteResult as ag, type SvgSpriteSymbol as ah, type TestPatternResult as ai, type TsconfigIssue as aj, type TsconfigValidationResult as ak, analyzeRegexGroups as al, auditDependencyRanges as am, buildDockerPull as an, buildDockerRun as ao, buildGitCommand as ap, collapseHtmlWhitespace as aq, collapseJsWhitespace as ar, countProperties as as, countRules as at, detectDialect as au, detectOperationType as av, detectRedos as aw, envToExport as ax, envToJson as ay, extractMarkdownFootnotes as az, type ApiInfo as b, removeRedundantAttributes as b0, searchCheatsheet as b1, searchEndpoints as b2, splitStatements as b3, testGitignorePatterns as b4, testPattern as b5, testRegex as b6, validateEditorConfig as b7, validateEnvKey as b8, validatePackageExports as b9, validateTsconfig as ba, code as c, type CheatsheetEntry as d, type CommitTrailer as e, type CommitTrailerResult as f, type ConventionalCommitFinding as g, type ConventionalCommitFooter as h, type ConventionalCommitOptions as i, type ConventionalCommitParsed as j, type ConventionalCommitResult as k, type ConventionalCommitSeverity as l, type CssResult as m, type DependencyAuditDuplicate as n, type DependencyAuditEntry as o, type DependencyAuditIssue as p, type DependencyAuditResult as q, type DependencyRangeType as r, type DependencySection as s, type DockerImageRef as t, type EditorConfigProperty as u, type EditorConfigSection as v, type EditorConfigValidationResult as w, type EnvEntry as x, type EnvParseResult as y, type ExportsIssue as z };