@utilix-tech/sdk 0.11.0 → 0.12.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,9 @@
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.12.0
6
+ - Added ICO Favicon Inspector (`readIcoInfo`) and Barcode Checksum Validator (`validateBarcode`).
7
+
5
8
  ## 0.11.0
6
9
  - Added IBAN Validator / Formatter (`validateIban`) and Loan / Mortgage Calculator (`calculateLoan`).
7
10
  - (npm publish for this version was retried after fixing a CI pin: `npm install -g npm@latest` started pulling npm 12, which requires Node >=22 and broke on this job's pinned Node 20 — now pinned to the npm 11 line.)
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @utilix-tech/sdk
2
2
 
3
- **533 developer utility functions for Node.js: runs locally, no API key required.**
3
+ **535 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)
@@ -242,7 +242,7 @@ getNextRuns("*/5 * * * *", 5); // next 5 run timestamps
242
242
  ### `/units`: Conversions
243
243
 
244
244
  ```ts
245
- import { convertBytes, pxToAll, convert, formatValue, validateCardNumber, validateIban, calculateLoan } from "@utilix-tech/sdk/units";
245
+ import { convertBytes, pxToAll, convert, formatValue, validateCardNumber, validateIban, calculateLoan, validateBarcode } from "@utilix-tech/sdk/units";
246
246
 
247
247
  // File sizes
248
248
  convertBytes(1073741824, "GB"); // 1
@@ -272,6 +272,10 @@ validateIban("DE89 3704 0044 0532 0130 00");
272
272
  // Loan / mortgage amortization
273
273
  calculateLoan(200000, 6.5, 360);
274
274
  // { monthlyPayment: 1264.14, totalInterest: 255085.82, termMonths: 360, schedule: [...] }
275
+
276
+ // EAN-13 / EAN-8 / UPC-A barcode checksum validation
277
+ validateBarcode("4006381333931");
278
+ // { valid: true, format: "EAN-13", digits: "4006381333931", checkDigit: 1, expectedCheckDigit: 1 }
275
279
  ```
276
280
 
277
281
  ---
@@ -444,10 +448,10 @@ analyzeString("café"); // { length: 4, codePoints: [...], ... }
444
448
 
445
449
  ---
446
450
 
447
- ### `/media`: Image Header Parsing, EXIF, PDF, WAV & ID3 Metadata
451
+ ### `/media`: Image Header Parsing, EXIF, PDF, WAV, ID3 & ICO Metadata
448
452
 
449
453
  ```ts
450
- import { readImageInfo, readExifData, readPdfMetadata, readWavInfo, readId3Tags } from "@utilix-tech/sdk/media";
454
+ import { readImageInfo, readExifData, readPdfMetadata, readWavInfo, readId3Tags, readIcoInfo } from "@utilix-tech/sdk/media";
451
455
 
452
456
  // Reads format, dimensions, bit depth, and alpha channel straight from
453
457
  // file bytes: no decoding, no canvas, no image library.
@@ -479,9 +483,15 @@ readWavInfo(new Uint8Array(wavBytes));
479
483
  const mp3Bytes = await fs.promises.readFile("track.mp3");
480
484
  readId3Tags(new Uint8Array(mp3Bytes));
481
485
  // { version: "ID3v2.3.0", title: "Track Name", artist: "Artist Name", genre: "Rock", ... }
486
+
487
+ // Reads how many images a .ico file embeds and each one's dimensions, color
488
+ // depth, and size directly from its ICONDIR/ICONDIRENTRY header table.
489
+ const icoBytes = await fs.promises.readFile("favicon.ico");
490
+ readIcoInfo(new Uint8Array(icoBytes));
491
+ // { imageCount: 3, images: [{ width: 16, height: 16, bitCount: 32, bytesInRes: 1128, ... }, ...] }
482
492
  ```
483
493
 
484
- `readImageInfo` supports PNG, JPEG, GIF, WebP, and BMP. `readExifData` supports JPEG only. `readWavInfo` supports the canonical RIFF/WAVE container only. `readId3Tags` decodes ID3v2.3/2.4 and ID3v1/1.1 only (ID3v2.2 is detected but not decoded).
494
+ `readImageInfo` supports PNG, JPEG, GIF, WebP, and BMP. `readExifData` supports JPEG only. `readWavInfo` supports the canonical RIFF/WAVE container only. `readId3Tags` decodes ID3v2.3/2.4 and ID3v1/1.1 only (ID3v2.2 is detected but not decoded). `readIcoInfo` reads .ico icon files only and rejects .cur cursor files.
485
495
 
486
496
  ---
487
497
 
@@ -496,7 +506,7 @@ readId3Tags(new Uint8Array(mp3Bytes));
496
506
  | `@utilix-tech/sdk/data` | CSV, YAML, TOML, XML, INI, NDJSON parse and convert |
497
507
  | `@utilix-tech/sdk/generators` | UUID v4/v7, ULID, passwords, strength check, fake data |
498
508
  | `@utilix-tech/sdk/time` | Date diff, timezone convert, cron parse, relative time |
499
- | `@utilix-tech/sdk/units` | Bytes, CSS px/rem, number bases, currency format |
509
+ | `@utilix-tech/sdk/units` | Bytes, CSS px/rem, number bases, currency format, credit card/IBAN/barcode validation, loan calculator |
500
510
  | `@utilix-tech/sdk/network` | HTTP status codes, IP validation, country flags, geolocation URLs, HAR file parsing |
501
511
  | `@utilix-tech/sdk/api` | cURL build/parse, JWT decode/sign, JWKS parse, CORS headers, CSP header |
502
512
  | `@utilix-tech/sdk/code` | SQL format/minify, HTML format/minify, regex tester, GraphQL format |
@@ -504,7 +514,7 @@ readId3Tags(new Uint8Array(mp3Bytes));
504
514
  | `@utilix-tech/sdk/css` | CSS gradient, box-shadow, border-radius, keyframe animation generators |
505
515
  | `@utilix-tech/sdk/misc` | SVG optimize/sanitize, file size format, Unicode inspector |
506
516
  | `@utilix-tech/sdk/ai_agent` | Token estimate/trim, chunk text, extract URLs/JSON/keywords, sanitize HTML, flatten/merge JSON, dedupe lines, validate schema, PII/secret/injection detect |
507
- | `@utilix-tech/sdk/media` | Image format & dimension reading from raw bytes (PNG, JPEG, GIF, WebP, BMP); PDF metadata reading; WAV audio info |
517
+ | `@utilix-tech/sdk/media` | Image format & dimension reading from raw bytes (PNG, JPEG, GIF, WebP, BMP); PDF metadata reading; WAV audio info; ID3 tags; ICO favicon inspection |
508
518
 
509
519
  ---
510
520
 
@@ -61,6 +61,7 @@ __export(units_exports, {
61
61
  sortVersions: () => sortVersions,
62
62
  splitSubnet: () => splitSubnet,
63
63
  symbolicToPermissions: () => symbolicToPermissions,
64
+ validateBarcode: () => validateBarcode,
64
65
  validateCardNumber: () => validateCardNumber,
65
66
  validateIban: () => validateIban,
66
67
  viewportToPx: () => viewportToPx
@@ -1115,5 +1116,29 @@ function calculateLoan(principal, annualRatePercent, termMonths) {
1115
1116
  schedule
1116
1117
  };
1117
1118
  }
1119
+ var BARCODE_FORMAT_BY_LENGTH = { 8: "EAN-8", 12: "UPC-A", 13: "EAN-13" };
1120
+ function computeBarcodeCheckDigit(dataDigits) {
1121
+ let sum = 0;
1122
+ const n = dataDigits.length;
1123
+ for (let i = 0; i < n; i++) {
1124
+ const distanceFromEnd = n - 1 - i;
1125
+ const weight = distanceFromEnd % 2 === 0 ? 3 : 1;
1126
+ sum += dataDigits[i] * weight;
1127
+ }
1128
+ return (10 - sum % 10) % 10;
1129
+ }
1130
+ function validateBarcode(input) {
1131
+ if (!input || !input.trim()) return { error: "Input is empty" };
1132
+ const digits = input.replace(/[\s-]/g, "");
1133
+ if (!/^\d+$/.test(digits)) return { error: "Barcode must contain only digits (spaces and hyphens are ignored)" };
1134
+ const format = BARCODE_FORMAT_BY_LENGTH[digits.length];
1135
+ if (!format) {
1136
+ return { error: `Unsupported barcode length (${digits.length} digits); expected 8 (EAN-8), 12 (UPC-A), or 13 (EAN-13)` };
1137
+ }
1138
+ const dataDigits = digits.slice(0, -1).split("").map(Number);
1139
+ const checkDigit = Number(digits[digits.length - 1]);
1140
+ const expectedCheckDigit = computeBarcodeCheckDigit(dataDigits);
1141
+ return { valid: checkDigit === expectedCheckDigit, format, digits, checkDigit, expectedCheckDigit };
1142
+ }
1118
1143
 
1119
- export { BASE_LABELS, BASE_PREFIXES, BYTE_UNITS, COMMON_CURRENCIES, COMMON_LOCALES, COMMON_PERMISSIONS, COMMON_RATIOS, COMMON_SIZES, COMMON_VIEWPORTS, autoFormat, bumpVersion, calcAspectRatio, calcSubnet, calculateLoan, compareSemver, convert, convertBytes, convertIp, coverBox, decimalToIp, decimalToIpCidr, describePermissions, fitIntoBox, formatNumber, formatValue, formatVwValue, formatWithSeparator, gcd, ipFromBinary, ipFromDecimal, ipFromHex, ipToBinary, ipToDecimal, ipToDecimalCidr, ipToHex, ipToOctal, isValid, isValidCidr, isValidIp, isValidIpv4, octalToPermissions, parseFileSize, parseInput, parseNumberString, parseSemver, permissionsToChmod, permissionsToOctal, permissionsToSymbolic, ptToPx, pxToAll, pxToViewport, remToPx, satisfiesRange, scaleByHeight, scaleByWidth, sortVersions, splitSubnet, symbolicToPermissions, units_exports, validateCardNumber, validateIban, viewportToPx };
1144
+ export { BASE_LABELS, BASE_PREFIXES, BYTE_UNITS, COMMON_CURRENCIES, COMMON_LOCALES, COMMON_PERMISSIONS, COMMON_RATIOS, COMMON_SIZES, COMMON_VIEWPORTS, autoFormat, bumpVersion, calcAspectRatio, calcSubnet, calculateLoan, compareSemver, convert, convertBytes, convertIp, coverBox, decimalToIp, decimalToIpCidr, describePermissions, fitIntoBox, formatNumber, formatValue, formatVwValue, formatWithSeparator, gcd, ipFromBinary, ipFromDecimal, ipFromHex, ipToBinary, ipToDecimal, ipToDecimalCidr, ipToHex, ipToOctal, isValid, isValidCidr, isValidIp, isValidIpv4, octalToPermissions, parseFileSize, parseInput, parseNumberString, parseSemver, permissionsToChmod, permissionsToOctal, permissionsToSymbolic, ptToPx, pxToAll, pxToViewport, remToPx, satisfiesRange, scaleByHeight, scaleByWidth, sortVersions, splitSubnet, symbolicToPermissions, units_exports, validateBarcode, validateCardNumber, validateIban, viewportToPx };
@@ -4,6 +4,7 @@ import { __export } from './chunk-MLKGABMK.js';
4
4
  var media_exports = {};
5
5
  __export(media_exports, {
6
6
  readExifData: () => readExifData,
7
+ readIcoInfo: () => readIcoInfo,
7
8
  readId3Tags: () => readId3Tags,
8
9
  readImageInfo: () => readImageInfo,
9
10
  readPdfMetadata: () => readPdfMetadata,
@@ -730,5 +731,38 @@ function readId3Tags(bytes) {
730
731
  }
731
732
  return { error: "No ID3v1 or ID3v2.3/2.4 tags found in this file" };
732
733
  }
734
+ function readU16LE(bytes, offset) {
735
+ return bytes[offset] | bytes[offset + 1] << 8;
736
+ }
737
+ function readU32LE(bytes, offset) {
738
+ return (bytes[offset] | bytes[offset + 1] << 8 | bytes[offset + 2] << 16 | bytes[offset + 3] << 24) >>> 0;
739
+ }
740
+ function readIcoInfo(bytes) {
741
+ if (bytes.length < 6) return { error: "File too small to be a valid ICO file" };
742
+ if (readU16LE(bytes, 0) !== 0) return { error: "Not a valid ICO file (reserved header field must be 0)" };
743
+ const type = readU16LE(bytes, 2);
744
+ if (type === 2) return { error: "This is a .cur cursor file (type 2), not a .ico icon file" };
745
+ if (type !== 1) return { error: `Unrecognized ICONDIR type (${type}); expected 1 for an icon file` };
746
+ const count = readU16LE(bytes, 4);
747
+ if (count === 0) return { error: "ICO file declares zero embedded images" };
748
+ const images = [];
749
+ for (let i = 0; i < count; i++) {
750
+ const offset = 6 + i * 16;
751
+ if (offset + 16 > bytes.length) return { error: `Truncated ICONDIRENTRY for image ${i}` };
752
+ const widthRaw = bytes[offset];
753
+ const heightRaw = bytes[offset + 1];
754
+ const colorCountRaw = bytes[offset + 2];
755
+ images.push({
756
+ width: widthRaw === 0 ? 256 : widthRaw,
757
+ height: heightRaw === 0 ? 256 : heightRaw,
758
+ colorCount: colorCountRaw === 0 ? null : colorCountRaw,
759
+ planes: readU16LE(bytes, offset + 4),
760
+ bitCount: readU16LE(bytes, offset + 6),
761
+ bytesInRes: readU32LE(bytes, offset + 8),
762
+ imageOffset: readU32LE(bytes, offset + 12)
763
+ });
764
+ }
765
+ return { imageCount: count, images };
766
+ }
733
767
 
734
- export { media_exports, readExifData, readId3Tags, readImageInfo, readPdfMetadata, readWavInfo };
768
+ export { media_exports, readExifData, readIcoInfo, readId3Tags, readImageInfo, readPdfMetadata, readWavInfo };
package/dist/index.cjs CHANGED
@@ -6666,6 +6666,7 @@ __export(units_exports, {
6666
6666
  sortVersions: () => sortVersions,
6667
6667
  splitSubnet: () => splitSubnet,
6668
6668
  symbolicToPermissions: () => symbolicToPermissions,
6669
+ validateBarcode: () => validateBarcode,
6669
6670
  validateCardNumber: () => validateCardNumber,
6670
6671
  validateIban: () => validateIban,
6671
6672
  viewportToPx: () => viewportToPx
@@ -7720,6 +7721,30 @@ function calculateLoan(principal, annualRatePercent, termMonths) {
7720
7721
  schedule
7721
7722
  };
7722
7723
  }
7724
+ var BARCODE_FORMAT_BY_LENGTH = { 8: "EAN-8", 12: "UPC-A", 13: "EAN-13" };
7725
+ function computeBarcodeCheckDigit(dataDigits) {
7726
+ let sum = 0;
7727
+ const n = dataDigits.length;
7728
+ for (let i = 0; i < n; i++) {
7729
+ const distanceFromEnd = n - 1 - i;
7730
+ const weight = distanceFromEnd % 2 === 0 ? 3 : 1;
7731
+ sum += dataDigits[i] * weight;
7732
+ }
7733
+ return (10 - sum % 10) % 10;
7734
+ }
7735
+ function validateBarcode(input) {
7736
+ if (!input || !input.trim()) return { error: "Input is empty" };
7737
+ const digits = input.replace(/[\s-]/g, "");
7738
+ if (!/^\d+$/.test(digits)) return { error: "Barcode must contain only digits (spaces and hyphens are ignored)" };
7739
+ const format = BARCODE_FORMAT_BY_LENGTH[digits.length];
7740
+ if (!format) {
7741
+ return { error: `Unsupported barcode length (${digits.length} digits); expected 8 (EAN-8), 12 (UPC-A), or 13 (EAN-13)` };
7742
+ }
7743
+ const dataDigits = digits.slice(0, -1).split("").map(Number);
7744
+ const checkDigit = Number(digits[digits.length - 1]);
7745
+ const expectedCheckDigit = computeBarcodeCheckDigit(dataDigits);
7746
+ return { valid: checkDigit === expectedCheckDigit, format, digits, checkDigit, expectedCheckDigit };
7747
+ }
7723
7748
 
7724
7749
  // src/tools/network.ts
7725
7750
  var network_exports = {};
@@ -17413,6 +17438,7 @@ function summarizeForLlm(text, maxTokens = 200, strategy = "extractive") {
17413
17438
  var media_exports = {};
17414
17439
  __export(media_exports, {
17415
17440
  readExifData: () => readExifData,
17441
+ readIcoInfo: () => readIcoInfo,
17416
17442
  readId3Tags: () => readId3Tags,
17417
17443
  readImageInfo: () => readImageInfo,
17418
17444
  readPdfMetadata: () => readPdfMetadata,
@@ -18139,6 +18165,39 @@ function readId3Tags(bytes) {
18139
18165
  }
18140
18166
  return { error: "No ID3v1 or ID3v2.3/2.4 tags found in this file" };
18141
18167
  }
18168
+ function readU16LE(bytes, offset) {
18169
+ return bytes[offset] | bytes[offset + 1] << 8;
18170
+ }
18171
+ function readU32LE(bytes, offset) {
18172
+ return (bytes[offset] | bytes[offset + 1] << 8 | bytes[offset + 2] << 16 | bytes[offset + 3] << 24) >>> 0;
18173
+ }
18174
+ function readIcoInfo(bytes) {
18175
+ if (bytes.length < 6) return { error: "File too small to be a valid ICO file" };
18176
+ if (readU16LE(bytes, 0) !== 0) return { error: "Not a valid ICO file (reserved header field must be 0)" };
18177
+ const type = readU16LE(bytes, 2);
18178
+ if (type === 2) return { error: "This is a .cur cursor file (type 2), not a .ico icon file" };
18179
+ if (type !== 1) return { error: `Unrecognized ICONDIR type (${type}); expected 1 for an icon file` };
18180
+ const count = readU16LE(bytes, 4);
18181
+ if (count === 0) return { error: "ICO file declares zero embedded images" };
18182
+ const images = [];
18183
+ for (let i = 0; i < count; i++) {
18184
+ const offset = 6 + i * 16;
18185
+ if (offset + 16 > bytes.length) return { error: `Truncated ICONDIRENTRY for image ${i}` };
18186
+ const widthRaw = bytes[offset];
18187
+ const heightRaw = bytes[offset + 1];
18188
+ const colorCountRaw = bytes[offset + 2];
18189
+ images.push({
18190
+ width: widthRaw === 0 ? 256 : widthRaw,
18191
+ height: heightRaw === 0 ? 256 : heightRaw,
18192
+ colorCount: colorCountRaw === 0 ? null : colorCountRaw,
18193
+ planes: readU16LE(bytes, offset + 4),
18194
+ bitCount: readU16LE(bytes, offset + 6),
18195
+ bytesInRes: readU32LE(bytes, offset + 8),
18196
+ imageOffset: readU32LE(bytes, offset + 12)
18197
+ });
18198
+ }
18199
+ return { imageCount: count, images };
18200
+ }
18142
18201
 
18143
18202
  // src/index.ts
18144
18203
  var version = "0.1.0";
package/dist/index.d.cts CHANGED
@@ -5,7 +5,7 @@ export { t as text } from './text-Bbx-tZ43.cjs';
5
5
  export { d as data } from './data-D8XTI7Du.cjs';
6
6
  export { g as generators } from './generators-BGtRGpJZ.cjs';
7
7
  export { t as time } from './time-DbT8fjaF.cjs';
8
- export { u as units } from './units-BG387sch.cjs';
8
+ export { u as units } from './units-Dt80-S2j.cjs';
9
9
  export { n as network } from './network-DaNoZ5ER.cjs';
10
10
  export { a as api } from './api-Xl7OzIgq.cjs';
11
11
  export { c as code } from './code-BUqyaofO.cjs';
@@ -13,7 +13,7 @@ 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-CcpkV2DR.cjs';
16
- export { m as media } from './media-C3ZvGyKc.cjs';
16
+ export { m as media } from './media-9HEpTPGA.cjs';
17
17
 
18
18
  declare const version = "0.1.0";
19
19
 
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@ export { t as text } from './text-Bbx-tZ43.js';
5
5
  export { d as data } from './data-D8XTI7Du.js';
6
6
  export { g as generators } from './generators-BGtRGpJZ.js';
7
7
  export { t as time } from './time-DbT8fjaF.js';
8
- export { u as units } from './units-BG387sch.js';
8
+ export { u as units } from './units-Dt80-S2j.js';
9
9
  export { n as network } from './network-DaNoZ5ER.js';
10
10
  export { a as api } from './api-Xl7OzIgq.js';
11
11
  export { c as code } from './code-BUqyaofO.js';
@@ -13,7 +13,7 @@ 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-CcpkV2DR.js';
16
- export { m as media } from './media-C3ZvGyKc.js';
16
+ export { m as media } from './media-9HEpTPGA.js';
17
17
 
18
18
  declare const version = "0.1.0";
19
19
 
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- export { media_exports as media } from './chunk-GUUYEIU6.js';
2
- export { units_exports as units } from './chunk-GGDDCTFM.js';
1
+ export { media_exports as media } from './chunk-XMKJYVKB.js';
2
+ export { units_exports as units } from './chunk-CJGHHS5M.js';
3
3
  export { network_exports as network } from './chunk-OB56VNKJ.js';
4
4
  export { api_exports as api } from './chunk-Q3B3YWOA.js';
5
5
  export { code_exports as code } from './chunk-V5S6OJ4A.js';
@@ -108,9 +108,35 @@ interface Id3TagsError {
108
108
  * ID3v2.2 tags are detected but their 3-character frame IDs are not decoded.
109
109
  */
110
110
  declare function readId3Tags(bytes: Uint8Array): Id3Tags | Id3TagsError;
111
+ interface IcoImageEntry {
112
+ width: number;
113
+ height: number;
114
+ colorCount: number | null;
115
+ planes: number;
116
+ bitCount: number;
117
+ bytesInRes: number;
118
+ imageOffset: number;
119
+ }
120
+ interface IcoInfo {
121
+ imageCount: number;
122
+ images: IcoImageEntry[];
123
+ }
124
+ interface IcoInfoError {
125
+ error: string;
126
+ }
127
+ /**
128
+ * Read a .ico file's ICONDIR/ICONDIRENTRY header table to report how many
129
+ * images it embeds and each one's width, height, color depth, and size,
130
+ * without decoding any pixel data. Rejects .cur cursor files, which share
131
+ * the same container format but a different type flag.
132
+ */
133
+ declare function readIcoInfo(bytes: Uint8Array): IcoInfo | IcoInfoError;
111
134
 
112
135
  type media_ExifData = ExifData;
113
136
  type media_ExifError = ExifError;
137
+ type media_IcoImageEntry = IcoImageEntry;
138
+ type media_IcoInfo = IcoInfo;
139
+ type media_IcoInfoError = IcoInfoError;
114
140
  type media_Id3Tags = Id3Tags;
115
141
  type media_Id3TagsError = Id3TagsError;
116
142
  type media_ImageFormat = ImageFormat;
@@ -121,12 +147,13 @@ type media_PdfMetadataError = PdfMetadataError;
121
147
  type media_WavInfo = WavInfo;
122
148
  type media_WavInfoError = WavInfoError;
123
149
  declare const media_readExifData: typeof readExifData;
150
+ declare const media_readIcoInfo: typeof readIcoInfo;
124
151
  declare const media_readId3Tags: typeof readId3Tags;
125
152
  declare const media_readImageInfo: typeof readImageInfo;
126
153
  declare const media_readPdfMetadata: typeof readPdfMetadata;
127
154
  declare const media_readWavInfo: typeof readWavInfo;
128
155
  declare namespace media {
129
- export { type media_ExifData as ExifData, type media_ExifError as ExifError, 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_PdfMetadata as PdfMetadata, type media_PdfMetadataError as PdfMetadataError, type media_WavInfo as WavInfo, type media_WavInfoError as WavInfoError, media_readExifData as readExifData, media_readId3Tags as readId3Tags, media_readImageInfo as readImageInfo, media_readPdfMetadata as readPdfMetadata, media_readWavInfo as readWavInfo };
156
+ export { type media_ExifData as ExifData, type media_ExifError as ExifError, 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_PdfMetadata as PdfMetadata, type media_PdfMetadataError as PdfMetadataError, type media_WavInfo as WavInfo, type media_WavInfoError as WavInfoError, media_readExifData as readExifData, media_readIcoInfo as readIcoInfo, media_readId3Tags as readId3Tags, media_readImageInfo as readImageInfo, media_readPdfMetadata as readPdfMetadata, media_readWavInfo as readWavInfo };
130
157
  }
131
158
 
132
- export { type ExifData as E, type Id3Tags as I, type PdfMetadata as P, type WavInfo as W, type ExifError as a, type Id3TagsError as b, type ImageFormat as c, type ImageInfo as d, type ImageInfoError as e, type PdfMetadataError as f, type WavInfoError as g, readId3Tags as h, readImageInfo as i, readPdfMetadata as j, readWavInfo as k, media as m, readExifData as r };
159
+ export { type ExifData as E, type IcoImageEntry as I, type PdfMetadata as P, type WavInfo as W, type ExifError as a, type IcoInfo as b, type IcoInfoError as c, type Id3Tags as d, type Id3TagsError as e, type ImageFormat as f, type ImageInfo as g, type ImageInfoError as h, type PdfMetadataError as i, type WavInfoError as j, readIcoInfo as k, readId3Tags as l, media as m, readImageInfo as n, readPdfMetadata as o, readWavInfo as p, readExifData as r };
@@ -108,9 +108,35 @@ interface Id3TagsError {
108
108
  * ID3v2.2 tags are detected but their 3-character frame IDs are not decoded.
109
109
  */
110
110
  declare function readId3Tags(bytes: Uint8Array): Id3Tags | Id3TagsError;
111
+ interface IcoImageEntry {
112
+ width: number;
113
+ height: number;
114
+ colorCount: number | null;
115
+ planes: number;
116
+ bitCount: number;
117
+ bytesInRes: number;
118
+ imageOffset: number;
119
+ }
120
+ interface IcoInfo {
121
+ imageCount: number;
122
+ images: IcoImageEntry[];
123
+ }
124
+ interface IcoInfoError {
125
+ error: string;
126
+ }
127
+ /**
128
+ * Read a .ico file's ICONDIR/ICONDIRENTRY header table to report how many
129
+ * images it embeds and each one's width, height, color depth, and size,
130
+ * without decoding any pixel data. Rejects .cur cursor files, which share
131
+ * the same container format but a different type flag.
132
+ */
133
+ declare function readIcoInfo(bytes: Uint8Array): IcoInfo | IcoInfoError;
111
134
 
112
135
  type media_ExifData = ExifData;
113
136
  type media_ExifError = ExifError;
137
+ type media_IcoImageEntry = IcoImageEntry;
138
+ type media_IcoInfo = IcoInfo;
139
+ type media_IcoInfoError = IcoInfoError;
114
140
  type media_Id3Tags = Id3Tags;
115
141
  type media_Id3TagsError = Id3TagsError;
116
142
  type media_ImageFormat = ImageFormat;
@@ -121,12 +147,13 @@ type media_PdfMetadataError = PdfMetadataError;
121
147
  type media_WavInfo = WavInfo;
122
148
  type media_WavInfoError = WavInfoError;
123
149
  declare const media_readExifData: typeof readExifData;
150
+ declare const media_readIcoInfo: typeof readIcoInfo;
124
151
  declare const media_readId3Tags: typeof readId3Tags;
125
152
  declare const media_readImageInfo: typeof readImageInfo;
126
153
  declare const media_readPdfMetadata: typeof readPdfMetadata;
127
154
  declare const media_readWavInfo: typeof readWavInfo;
128
155
  declare namespace media {
129
- export { type media_ExifData as ExifData, type media_ExifError as ExifError, 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_PdfMetadata as PdfMetadata, type media_PdfMetadataError as PdfMetadataError, type media_WavInfo as WavInfo, type media_WavInfoError as WavInfoError, media_readExifData as readExifData, media_readId3Tags as readId3Tags, media_readImageInfo as readImageInfo, media_readPdfMetadata as readPdfMetadata, media_readWavInfo as readWavInfo };
156
+ export { type media_ExifData as ExifData, type media_ExifError as ExifError, 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_PdfMetadata as PdfMetadata, type media_PdfMetadataError as PdfMetadataError, type media_WavInfo as WavInfo, type media_WavInfoError as WavInfoError, media_readExifData as readExifData, media_readIcoInfo as readIcoInfo, media_readId3Tags as readId3Tags, media_readImageInfo as readImageInfo, media_readPdfMetadata as readPdfMetadata, media_readWavInfo as readWavInfo };
130
157
  }
131
158
 
132
- export { type ExifData as E, type Id3Tags as I, type PdfMetadata as P, type WavInfo as W, type ExifError as a, type Id3TagsError as b, type ImageFormat as c, type ImageInfo as d, type ImageInfoError as e, type PdfMetadataError as f, type WavInfoError as g, readId3Tags as h, readImageInfo as i, readPdfMetadata as j, readWavInfo as k, media as m, readExifData as r };
159
+ export { type ExifData as E, type IcoImageEntry as I, type PdfMetadata as P, type WavInfo as W, type ExifError as a, type IcoInfo as b, type IcoInfoError as c, type Id3Tags as d, type Id3TagsError as e, type ImageFormat as f, type ImageInfo as g, type ImageInfoError as h, type PdfMetadataError as i, type WavInfoError as j, readIcoInfo as k, readId3Tags as l, media as m, readImageInfo as n, readPdfMetadata as o, readWavInfo as p, readExifData as r };
@@ -722,8 +722,42 @@ function readId3Tags(bytes) {
722
722
  }
723
723
  return { error: "No ID3v1 or ID3v2.3/2.4 tags found in this file" };
724
724
  }
725
+ function readU16LE(bytes, offset) {
726
+ return bytes[offset] | bytes[offset + 1] << 8;
727
+ }
728
+ function readU32LE(bytes, offset) {
729
+ return (bytes[offset] | bytes[offset + 1] << 8 | bytes[offset + 2] << 16 | bytes[offset + 3] << 24) >>> 0;
730
+ }
731
+ function readIcoInfo(bytes) {
732
+ if (bytes.length < 6) return { error: "File too small to be a valid ICO file" };
733
+ if (readU16LE(bytes, 0) !== 0) return { error: "Not a valid ICO file (reserved header field must be 0)" };
734
+ const type = readU16LE(bytes, 2);
735
+ if (type === 2) return { error: "This is a .cur cursor file (type 2), not a .ico icon file" };
736
+ if (type !== 1) return { error: `Unrecognized ICONDIR type (${type}); expected 1 for an icon file` };
737
+ const count = readU16LE(bytes, 4);
738
+ if (count === 0) return { error: "ICO file declares zero embedded images" };
739
+ const images = [];
740
+ for (let i = 0; i < count; i++) {
741
+ const offset = 6 + i * 16;
742
+ if (offset + 16 > bytes.length) return { error: `Truncated ICONDIRENTRY for image ${i}` };
743
+ const widthRaw = bytes[offset];
744
+ const heightRaw = bytes[offset + 1];
745
+ const colorCountRaw = bytes[offset + 2];
746
+ images.push({
747
+ width: widthRaw === 0 ? 256 : widthRaw,
748
+ height: heightRaw === 0 ? 256 : heightRaw,
749
+ colorCount: colorCountRaw === 0 ? null : colorCountRaw,
750
+ planes: readU16LE(bytes, offset + 4),
751
+ bitCount: readU16LE(bytes, offset + 6),
752
+ bytesInRes: readU32LE(bytes, offset + 8),
753
+ imageOffset: readU32LE(bytes, offset + 12)
754
+ });
755
+ }
756
+ return { imageCount: count, images };
757
+ }
725
758
 
726
759
  exports.readExifData = readExifData;
760
+ exports.readIcoInfo = readIcoInfo;
727
761
  exports.readId3Tags = readId3Tags;
728
762
  exports.readImageInfo = readImageInfo;
729
763
  exports.readPdfMetadata = readPdfMetadata;
@@ -1 +1 @@
1
- export { E as ExifData, a as ExifError, I as Id3Tags, b as Id3TagsError, c as ImageFormat, d as ImageInfo, e as ImageInfoError, P as PdfMetadata, f as PdfMetadataError, W as WavInfo, g as WavInfoError, r as readExifData, h as readId3Tags, i as readImageInfo, j as readPdfMetadata, k as readWavInfo } from '../media-C3ZvGyKc.cjs';
1
+ export { E as ExifData, a as ExifError, I as IcoImageEntry, b as IcoInfo, c as IcoInfoError, d as Id3Tags, e as Id3TagsError, f as ImageFormat, g as ImageInfo, h as ImageInfoError, P as PdfMetadata, i as PdfMetadataError, W as WavInfo, j as WavInfoError, r as readExifData, k as readIcoInfo, l as readId3Tags, n as readImageInfo, o as readPdfMetadata, p as readWavInfo } from '../media-9HEpTPGA.cjs';
@@ -1 +1 @@
1
- export { E as ExifData, a as ExifError, I as Id3Tags, b as Id3TagsError, c as ImageFormat, d as ImageInfo, e as ImageInfoError, P as PdfMetadata, f as PdfMetadataError, W as WavInfo, g as WavInfoError, r as readExifData, h as readId3Tags, i as readImageInfo, j as readPdfMetadata, k as readWavInfo } from '../media-C3ZvGyKc.js';
1
+ export { E as ExifData, a as ExifError, I as IcoImageEntry, b as IcoInfo, c as IcoInfoError, d as Id3Tags, e as Id3TagsError, f as ImageFormat, g as ImageInfo, h as ImageInfoError, P as PdfMetadata, i as PdfMetadataError, W as WavInfo, j as WavInfoError, r as readExifData, k as readIcoInfo, l as readId3Tags, n as readImageInfo, o as readPdfMetadata, p as readWavInfo } from '../media-9HEpTPGA.js';
@@ -1,2 +1,2 @@
1
- export { readExifData, readId3Tags, readImageInfo, readPdfMetadata, readWavInfo } from '../chunk-GUUYEIU6.js';
1
+ export { readExifData, readIcoInfo, readId3Tags, readImageInfo, readPdfMetadata, readWavInfo } from '../chunk-XMKJYVKB.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -1051,6 +1051,30 @@ function calculateLoan(principal, annualRatePercent, termMonths) {
1051
1051
  schedule
1052
1052
  };
1053
1053
  }
1054
+ var BARCODE_FORMAT_BY_LENGTH = { 8: "EAN-8", 12: "UPC-A", 13: "EAN-13" };
1055
+ function computeBarcodeCheckDigit(dataDigits) {
1056
+ let sum = 0;
1057
+ const n = dataDigits.length;
1058
+ for (let i = 0; i < n; i++) {
1059
+ const distanceFromEnd = n - 1 - i;
1060
+ const weight = distanceFromEnd % 2 === 0 ? 3 : 1;
1061
+ sum += dataDigits[i] * weight;
1062
+ }
1063
+ return (10 - sum % 10) % 10;
1064
+ }
1065
+ function validateBarcode(input) {
1066
+ if (!input || !input.trim()) return { error: "Input is empty" };
1067
+ const digits = input.replace(/[\s-]/g, "");
1068
+ if (!/^\d+$/.test(digits)) return { error: "Barcode must contain only digits (spaces and hyphens are ignored)" };
1069
+ const format = BARCODE_FORMAT_BY_LENGTH[digits.length];
1070
+ if (!format) {
1071
+ return { error: `Unsupported barcode length (${digits.length} digits); expected 8 (EAN-8), 12 (UPC-A), or 13 (EAN-13)` };
1072
+ }
1073
+ const dataDigits = digits.slice(0, -1).split("").map(Number);
1074
+ const checkDigit = Number(digits[digits.length - 1]);
1075
+ const expectedCheckDigit = computeBarcodeCheckDigit(dataDigits);
1076
+ return { valid: checkDigit === expectedCheckDigit, format, digits, checkDigit, expectedCheckDigit };
1077
+ }
1054
1078
 
1055
1079
  exports.BASE_LABELS = BASE_LABELS;
1056
1080
  exports.BASE_PREFIXES = BASE_PREFIXES;
@@ -1110,6 +1134,7 @@ exports.scaleByWidth = scaleByWidth;
1110
1134
  exports.sortVersions = sortVersions;
1111
1135
  exports.splitSubnet = splitSubnet;
1112
1136
  exports.symbolicToPermissions = symbolicToPermissions;
1137
+ exports.validateBarcode = validateBarcode;
1113
1138
  exports.validateCardNumber = validateCardNumber;
1114
1139
  exports.validateIban = validateIban;
1115
1140
  exports.viewportToPx = viewportToPx;
@@ -1 +1 @@
1
- export { A as AmortizationRow, a as AspectRatioResult, B as BASE_LABELS, b as BASE_PREFIXES, c as BYTE_UNITS, d as BaseConvertResult, e as ByteConvertResult, f as ByteUnit, C as COMMON_CURRENCIES, g as COMMON_LOCALES, h as COMMON_PERMISSIONS, i as COMMON_RATIOS, j as COMMON_SIZES, k as COMMON_VIEWPORTS, l as CardValidationResult, D as Dimensions, F as FilePermissions, m as FormatOptions, I as IbanValidationResult, n as IpConversion, L as LoanResult, N as NotationStyle, o as NumberBase, P as Permission, p as PxConvertResult, S as SemverVersion, q as SubnetInfo, V as ViewportConvertResult, r as autoFormat, s as bumpVersion, t as calcAspectRatio, v as calcSubnet, w as calculateLoan, x as compareSemver, y as convert, z as convertBytes, E as convertIp, G as coverBox, H as decimalToIp, J as decimalToIpCidr, K as describePermissions, M as fitIntoBox, O as formatNumber, Q as formatValue, R as formatVwValue, T as formatWithSeparator, U as gcd, W as ipFromBinary, X as ipFromDecimal, Y as ipFromHex, Z as ipToBinary, _ as ipToDecimal, $ as ipToDecimalCidr, a0 as ipToHex, a1 as ipToOctal, a2 as isValid, a3 as isValidCidr, a4 as isValidIp, a5 as isValidIpv4, a6 as octalToPermissions, a7 as parseFileSize, a8 as parseInput, a9 as parseNumberString, aa as parseSemver, ab as permissionsToChmod, ac as permissionsToOctal, ad as permissionsToSymbolic, ae as ptToPx, af as pxToAll, ag as pxToViewport, ah as remToPx, ai as satisfiesRange, aj as scaleByHeight, ak as scaleByWidth, al as sortVersions, am as splitSubnet, an as symbolicToPermissions, ao as validateCardNumber, ap as validateIban, aq as viewportToPx } from '../units-BG387sch.cjs';
1
+ export { A as AmortizationRow, a as AspectRatioResult, B as BASE_LABELS, b as BASE_PREFIXES, c as BYTE_UNITS, d as BarcodeFormat, e as BarcodeValidationResult, f as BaseConvertResult, g as ByteConvertResult, h as ByteUnit, C as COMMON_CURRENCIES, i as COMMON_LOCALES, j as COMMON_PERMISSIONS, k as COMMON_RATIOS, l as COMMON_SIZES, m as COMMON_VIEWPORTS, n as CardValidationResult, D as Dimensions, F as FilePermissions, o as FormatOptions, I as IbanValidationResult, p as IpConversion, L as LoanResult, N as NotationStyle, q as NumberBase, P as Permission, r as PxConvertResult, S as SemverVersion, s as SubnetInfo, V as ViewportConvertResult, t as autoFormat, v as bumpVersion, w as calcAspectRatio, x as calcSubnet, y as calculateLoan, z as compareSemver, E as convert, G as convertBytes, H as convertIp, J as coverBox, K as decimalToIp, M as decimalToIpCidr, O as describePermissions, Q as fitIntoBox, R as formatNumber, T as formatValue, U as formatVwValue, W as formatWithSeparator, X as gcd, Y as ipFromBinary, Z as ipFromDecimal, _ as ipFromHex, $ as ipToBinary, a0 as ipToDecimal, a1 as ipToDecimalCidr, a2 as ipToHex, a3 as ipToOctal, a4 as isValid, a5 as isValidCidr, a6 as isValidIp, a7 as isValidIpv4, a8 as octalToPermissions, a9 as parseFileSize, aa as parseInput, ab as parseNumberString, ac as parseSemver, ad as permissionsToChmod, ae as permissionsToOctal, af as permissionsToSymbolic, ag as ptToPx, ah as pxToAll, ai as pxToViewport, aj as remToPx, ak as satisfiesRange, al as scaleByHeight, am as scaleByWidth, an as sortVersions, ao as splitSubnet, ap as symbolicToPermissions, aq as validateBarcode, ar as validateCardNumber, as as validateIban, at as viewportToPx } from '../units-Dt80-S2j.cjs';
@@ -1 +1 @@
1
- export { A as AmortizationRow, a as AspectRatioResult, B as BASE_LABELS, b as BASE_PREFIXES, c as BYTE_UNITS, d as BaseConvertResult, e as ByteConvertResult, f as ByteUnit, C as COMMON_CURRENCIES, g as COMMON_LOCALES, h as COMMON_PERMISSIONS, i as COMMON_RATIOS, j as COMMON_SIZES, k as COMMON_VIEWPORTS, l as CardValidationResult, D as Dimensions, F as FilePermissions, m as FormatOptions, I as IbanValidationResult, n as IpConversion, L as LoanResult, N as NotationStyle, o as NumberBase, P as Permission, p as PxConvertResult, S as SemverVersion, q as SubnetInfo, V as ViewportConvertResult, r as autoFormat, s as bumpVersion, t as calcAspectRatio, v as calcSubnet, w as calculateLoan, x as compareSemver, y as convert, z as convertBytes, E as convertIp, G as coverBox, H as decimalToIp, J as decimalToIpCidr, K as describePermissions, M as fitIntoBox, O as formatNumber, Q as formatValue, R as formatVwValue, T as formatWithSeparator, U as gcd, W as ipFromBinary, X as ipFromDecimal, Y as ipFromHex, Z as ipToBinary, _ as ipToDecimal, $ as ipToDecimalCidr, a0 as ipToHex, a1 as ipToOctal, a2 as isValid, a3 as isValidCidr, a4 as isValidIp, a5 as isValidIpv4, a6 as octalToPermissions, a7 as parseFileSize, a8 as parseInput, a9 as parseNumberString, aa as parseSemver, ab as permissionsToChmod, ac as permissionsToOctal, ad as permissionsToSymbolic, ae as ptToPx, af as pxToAll, ag as pxToViewport, ah as remToPx, ai as satisfiesRange, aj as scaleByHeight, ak as scaleByWidth, al as sortVersions, am as splitSubnet, an as symbolicToPermissions, ao as validateCardNumber, ap as validateIban, aq as viewportToPx } from '../units-BG387sch.js';
1
+ export { A as AmortizationRow, a as AspectRatioResult, B as BASE_LABELS, b as BASE_PREFIXES, c as BYTE_UNITS, d as BarcodeFormat, e as BarcodeValidationResult, f as BaseConvertResult, g as ByteConvertResult, h as ByteUnit, C as COMMON_CURRENCIES, i as COMMON_LOCALES, j as COMMON_PERMISSIONS, k as COMMON_RATIOS, l as COMMON_SIZES, m as COMMON_VIEWPORTS, n as CardValidationResult, D as Dimensions, F as FilePermissions, o as FormatOptions, I as IbanValidationResult, p as IpConversion, L as LoanResult, N as NotationStyle, q as NumberBase, P as Permission, r as PxConvertResult, S as SemverVersion, s as SubnetInfo, V as ViewportConvertResult, t as autoFormat, v as bumpVersion, w as calcAspectRatio, x as calcSubnet, y as calculateLoan, z as compareSemver, E as convert, G as convertBytes, H as convertIp, J as coverBox, K as decimalToIp, M as decimalToIpCidr, O as describePermissions, Q as fitIntoBox, R as formatNumber, T as formatValue, U as formatVwValue, W as formatWithSeparator, X as gcd, Y as ipFromBinary, Z as ipFromDecimal, _ as ipFromHex, $ as ipToBinary, a0 as ipToDecimal, a1 as ipToDecimalCidr, a2 as ipToHex, a3 as ipToOctal, a4 as isValid, a5 as isValidCidr, a6 as isValidIp, a7 as isValidIpv4, a8 as octalToPermissions, a9 as parseFileSize, aa as parseInput, ab as parseNumberString, ac as parseSemver, ad as permissionsToChmod, ae as permissionsToOctal, af as permissionsToSymbolic, ag as ptToPx, ah as pxToAll, ai as pxToViewport, aj as remToPx, ak as satisfiesRange, al as scaleByHeight, am as scaleByWidth, an as sortVersions, ao as splitSubnet, ap as symbolicToPermissions, aq as validateBarcode, ar as validateCardNumber, as as validateIban, at as viewportToPx } from '../units-Dt80-S2j.js';
@@ -1,2 +1,2 @@
1
- export { BASE_LABELS, BASE_PREFIXES, BYTE_UNITS, COMMON_CURRENCIES, COMMON_LOCALES, COMMON_PERMISSIONS, COMMON_RATIOS, COMMON_SIZES, COMMON_VIEWPORTS, autoFormat, bumpVersion, calcAspectRatio, calcSubnet, calculateLoan, compareSemver, convert, convertBytes, convertIp, coverBox, decimalToIp, decimalToIpCidr, describePermissions, fitIntoBox, formatNumber, formatValue, formatVwValue, formatWithSeparator, gcd, ipFromBinary, ipFromDecimal, ipFromHex, ipToBinary, ipToDecimal, ipToDecimalCidr, ipToHex, ipToOctal, isValid, isValidCidr, isValidIp, isValidIpv4, octalToPermissions, parseFileSize, parseInput, parseNumberString, parseSemver, permissionsToChmod, permissionsToOctal, permissionsToSymbolic, ptToPx, pxToAll, pxToViewport, remToPx, satisfiesRange, scaleByHeight, scaleByWidth, sortVersions, splitSubnet, symbolicToPermissions, validateCardNumber, validateIban, viewportToPx } from '../chunk-GGDDCTFM.js';
1
+ export { BASE_LABELS, BASE_PREFIXES, BYTE_UNITS, COMMON_CURRENCIES, COMMON_LOCALES, COMMON_PERMISSIONS, COMMON_RATIOS, COMMON_SIZES, COMMON_VIEWPORTS, autoFormat, bumpVersion, calcAspectRatio, calcSubnet, calculateLoan, compareSemver, convert, convertBytes, convertIp, coverBox, decimalToIp, decimalToIpCidr, describePermissions, fitIntoBox, formatNumber, formatValue, formatVwValue, formatWithSeparator, gcd, ipFromBinary, ipFromDecimal, ipFromHex, ipToBinary, ipToDecimal, ipToDecimalCidr, ipToHex, ipToOctal, isValid, isValidCidr, isValidIp, isValidIpv4, octalToPermissions, parseFileSize, parseInput, parseNumberString, parseSemver, permissionsToChmod, permissionsToOctal, permissionsToSymbolic, ptToPx, pxToAll, pxToViewport, remToPx, satisfiesRange, scaleByHeight, scaleByWidth, sortVersions, splitSubnet, symbolicToPermissions, validateBarcode, validateCardNumber, validateIban, viewportToPx } from '../chunk-CJGHHS5M.js';
2
2
  import '../chunk-MLKGABMK.js';
@@ -279,12 +279,30 @@ interface LoanResult {
279
279
  declare function calculateLoan(principal: number, annualRatePercent: number, termMonths: number): LoanResult | {
280
280
  error: string;
281
281
  };
282
+ type BarcodeFormat = "EAN-13" | "EAN-8" | "UPC-A";
283
+ interface BarcodeValidationResult {
284
+ valid: boolean;
285
+ format: BarcodeFormat;
286
+ digits: string;
287
+ checkDigit: number;
288
+ expectedCheckDigit: number;
289
+ }
290
+ /**
291
+ * Validate an EAN-13, EAN-8, or UPC-A barcode number via its weighted
292
+ * mod-10 check digit algorithm. The format is inferred from the digit
293
+ * count (8, 12, or 13) once spaces and hyphens are stripped.
294
+ */
295
+ declare function validateBarcode(input: string): BarcodeValidationResult | {
296
+ error: string;
297
+ };
282
298
 
283
299
  type units_AmortizationRow = AmortizationRow;
284
300
  type units_AspectRatioResult = AspectRatioResult;
285
301
  declare const units_BASE_LABELS: typeof BASE_LABELS;
286
302
  declare const units_BASE_PREFIXES: typeof BASE_PREFIXES;
287
303
  declare const units_BYTE_UNITS: typeof BYTE_UNITS;
304
+ type units_BarcodeFormat = BarcodeFormat;
305
+ type units_BarcodeValidationResult = BarcodeValidationResult;
288
306
  type units_BaseConvertResult = BaseConvertResult;
289
307
  type units_ByteConvertResult = ByteConvertResult;
290
308
  type units_ByteUnit = ByteUnit;
@@ -357,11 +375,12 @@ declare const units_scaleByWidth: typeof scaleByWidth;
357
375
  declare const units_sortVersions: typeof sortVersions;
358
376
  declare const units_splitSubnet: typeof splitSubnet;
359
377
  declare const units_symbolicToPermissions: typeof symbolicToPermissions;
378
+ declare const units_validateBarcode: typeof validateBarcode;
360
379
  declare const units_validateCardNumber: typeof validateCardNumber;
361
380
  declare const units_validateIban: typeof validateIban;
362
381
  declare const units_viewportToPx: typeof viewportToPx;
363
382
  declare namespace units {
364
- export { type units_AmortizationRow as AmortizationRow, type units_AspectRatioResult as AspectRatioResult, units_BASE_LABELS as BASE_LABELS, units_BASE_PREFIXES as BASE_PREFIXES, units_BYTE_UNITS as BYTE_UNITS, type units_BaseConvertResult as BaseConvertResult, type units_ByteConvertResult as ByteConvertResult, type units_ByteUnit as ByteUnit, units_COMMON_CURRENCIES as COMMON_CURRENCIES, units_COMMON_LOCALES as COMMON_LOCALES, units_COMMON_PERMISSIONS as COMMON_PERMISSIONS, units_COMMON_RATIOS as COMMON_RATIOS, units_COMMON_SIZES as COMMON_SIZES, units_COMMON_VIEWPORTS as COMMON_VIEWPORTS, type units_CardValidationResult as CardValidationResult, type units_Dimensions as Dimensions, type units_FilePermissions as FilePermissions, type units_FormatOptions as FormatOptions, type units_IbanValidationResult as IbanValidationResult, type units_IpConversion as IpConversion, type units_LoanResult as LoanResult, type units_NotationStyle as NotationStyle, type units_NumberBase as NumberBase, type units_Permission as Permission, type units_PxConvertResult as PxConvertResult, type units_SemverVersion as SemverVersion, type units_SubnetInfo as SubnetInfo, type units_ViewportConvertResult as ViewportConvertResult, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, units_calculateLoan as calculateLoan, units_compareSemver as compareSemver, units_convert as convert, units_convertBytes as convertBytes, units_convertIp as convertIp, units_coverBox as coverBox, units_decimalToIp as decimalToIp, units_decimalToIpCidr as decimalToIpCidr, units_describePermissions as describePermissions, units_fitIntoBox as fitIntoBox, units_formatNumber as formatNumber, units_formatValue as formatValue, units_formatVwValue as formatVwValue, units_formatWithSeparator as formatWithSeparator, units_gcd as gcd, units_ipFromBinary as ipFromBinary, units_ipFromDecimal as ipFromDecimal, units_ipFromHex as ipFromHex, units_ipToBinary as ipToBinary, units_ipToDecimal as ipToDecimal, units_ipToDecimalCidr as ipToDecimalCidr, units_ipToHex as ipToHex, units_ipToOctal as ipToOctal, units_isValid as isValid, units_isValidCidr as isValidCidr, units_isValidIp as isValidIp, units_isValidIpv4 as isValidIpv4, units_octalToPermissions as octalToPermissions, units_parseFileSize as parseFileSize, units_parseInput as parseInput, units_parseNumberString as parseNumberString, units_parseSemver as parseSemver, units_permissionsToChmod as permissionsToChmod, units_permissionsToOctal as permissionsToOctal, units_permissionsToSymbolic as permissionsToSymbolic, units_ptToPx as ptToPx, units_pxToAll as pxToAll, units_pxToViewport as pxToViewport, units_remToPx as remToPx, units_satisfiesRange as satisfiesRange, units_scaleByHeight as scaleByHeight, units_scaleByWidth as scaleByWidth, units_sortVersions as sortVersions, units_splitSubnet as splitSubnet, units_symbolicToPermissions as symbolicToPermissions, units_validateCardNumber as validateCardNumber, units_validateIban as validateIban, units_viewportToPx as viewportToPx };
383
+ export { type units_AmortizationRow as AmortizationRow, type units_AspectRatioResult as AspectRatioResult, units_BASE_LABELS as BASE_LABELS, units_BASE_PREFIXES as BASE_PREFIXES, units_BYTE_UNITS as BYTE_UNITS, type units_BarcodeFormat as BarcodeFormat, type units_BarcodeValidationResult as BarcodeValidationResult, type units_BaseConvertResult as BaseConvertResult, type units_ByteConvertResult as ByteConvertResult, type units_ByteUnit as ByteUnit, units_COMMON_CURRENCIES as COMMON_CURRENCIES, units_COMMON_LOCALES as COMMON_LOCALES, units_COMMON_PERMISSIONS as COMMON_PERMISSIONS, units_COMMON_RATIOS as COMMON_RATIOS, units_COMMON_SIZES as COMMON_SIZES, units_COMMON_VIEWPORTS as COMMON_VIEWPORTS, type units_CardValidationResult as CardValidationResult, type units_Dimensions as Dimensions, type units_FilePermissions as FilePermissions, type units_FormatOptions as FormatOptions, type units_IbanValidationResult as IbanValidationResult, type units_IpConversion as IpConversion, type units_LoanResult as LoanResult, type units_NotationStyle as NotationStyle, type units_NumberBase as NumberBase, type units_Permission as Permission, type units_PxConvertResult as PxConvertResult, type units_SemverVersion as SemverVersion, type units_SubnetInfo as SubnetInfo, type units_ViewportConvertResult as ViewportConvertResult, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, units_calculateLoan as calculateLoan, units_compareSemver as compareSemver, units_convert as convert, units_convertBytes as convertBytes, units_convertIp as convertIp, units_coverBox as coverBox, units_decimalToIp as decimalToIp, units_decimalToIpCidr as decimalToIpCidr, units_describePermissions as describePermissions, units_fitIntoBox as fitIntoBox, units_formatNumber as formatNumber, units_formatValue as formatValue, units_formatVwValue as formatVwValue, units_formatWithSeparator as formatWithSeparator, units_gcd as gcd, units_ipFromBinary as ipFromBinary, units_ipFromDecimal as ipFromDecimal, units_ipFromHex as ipFromHex, units_ipToBinary as ipToBinary, units_ipToDecimal as ipToDecimal, units_ipToDecimalCidr as ipToDecimalCidr, units_ipToHex as ipToHex, units_ipToOctal as ipToOctal, units_isValid as isValid, units_isValidCidr as isValidCidr, units_isValidIp as isValidIp, units_isValidIpv4 as isValidIpv4, units_octalToPermissions as octalToPermissions, units_parseFileSize as parseFileSize, units_parseInput as parseInput, units_parseNumberString as parseNumberString, units_parseSemver as parseSemver, units_permissionsToChmod as permissionsToChmod, units_permissionsToOctal as permissionsToOctal, units_permissionsToSymbolic as permissionsToSymbolic, units_ptToPx as ptToPx, units_pxToAll as pxToAll, units_pxToViewport as pxToViewport, units_remToPx as remToPx, units_satisfiesRange as satisfiesRange, units_scaleByHeight as scaleByHeight, units_scaleByWidth as scaleByWidth, units_sortVersions as sortVersions, units_splitSubnet as splitSubnet, units_symbolicToPermissions as symbolicToPermissions, units_validateBarcode as validateBarcode, units_validateCardNumber as validateCardNumber, units_validateIban as validateIban, units_viewportToPx as viewportToPx };
365
384
  }
366
385
 
367
- export { ipToDecimalCidr as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type Dimensions as D, convertIp as E, type FilePermissions as F, coverBox as G, decimalToIp as H, type IbanValidationResult as I, decimalToIpCidr as J, describePermissions as K, type LoanResult as L, fitIntoBox as M, type NotationStyle as N, formatNumber as O, type Permission as P, formatValue as Q, formatVwValue as R, type SemverVersion as S, formatWithSeparator as T, gcd as U, type ViewportConvertResult as V, ipFromBinary as W, ipFromDecimal as X, ipFromHex as Y, ipToBinary as Z, ipToDecimal as _, type AspectRatioResult as a, ipToHex as a0, ipToOctal as a1, isValid as a2, isValidCidr as a3, isValidIp as a4, isValidIpv4 as a5, octalToPermissions as a6, parseFileSize as a7, parseInput as a8, parseNumberString as a9, parseSemver as aa, permissionsToChmod as ab, permissionsToOctal as ac, permissionsToSymbolic as ad, ptToPx as ae, pxToAll as af, pxToViewport as ag, remToPx as ah, satisfiesRange as ai, scaleByHeight as aj, scaleByWidth as ak, sortVersions as al, splitSubnet as am, symbolicToPermissions as an, validateCardNumber as ao, validateIban as ap, viewportToPx as aq, BASE_PREFIXES as b, BYTE_UNITS as c, type BaseConvertResult as d, type ByteConvertResult as e, type ByteUnit as f, COMMON_LOCALES as g, COMMON_PERMISSIONS as h, COMMON_RATIOS as i, COMMON_SIZES as j, COMMON_VIEWPORTS as k, type CardValidationResult as l, type FormatOptions as m, type IpConversion as n, type NumberBase as o, type PxConvertResult as p, type SubnetInfo as q, autoFormat as r, bumpVersion as s, calcAspectRatio as t, units as u, calcSubnet as v, calculateLoan as w, compareSemver as x, convert as y, convertBytes as z };
386
+ export { ipToBinary as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type Dimensions as D, convert as E, type FilePermissions as F, convertBytes as G, convertIp as H, type IbanValidationResult as I, coverBox as J, decimalToIp as K, type LoanResult as L, decimalToIpCidr as M, type NotationStyle as N, describePermissions as O, type Permission as P, fitIntoBox as Q, formatNumber as R, type SemverVersion as S, formatValue as T, formatVwValue as U, type ViewportConvertResult as V, formatWithSeparator as W, gcd as X, ipFromBinary as Y, ipFromDecimal as Z, ipFromHex as _, type AspectRatioResult as a, ipToDecimal as a0, ipToDecimalCidr as a1, ipToHex as a2, ipToOctal as a3, isValid as a4, isValidCidr as a5, isValidIp as a6, isValidIpv4 as a7, octalToPermissions as a8, parseFileSize as a9, parseInput as aa, parseNumberString as ab, parseSemver as ac, permissionsToChmod as ad, permissionsToOctal as ae, permissionsToSymbolic as af, ptToPx as ag, pxToAll as ah, pxToViewport as ai, remToPx as aj, satisfiesRange as ak, scaleByHeight as al, scaleByWidth as am, sortVersions as an, splitSubnet as ao, symbolicToPermissions as ap, validateBarcode as aq, validateCardNumber as ar, validateIban as as, viewportToPx as at, BASE_PREFIXES as b, BYTE_UNITS as c, type BarcodeFormat as d, type BarcodeValidationResult as e, type BaseConvertResult as f, type ByteConvertResult as g, type ByteUnit as h, COMMON_LOCALES as i, COMMON_PERMISSIONS as j, COMMON_RATIOS as k, COMMON_SIZES as l, COMMON_VIEWPORTS as m, type CardValidationResult as n, type FormatOptions as o, type IpConversion as p, type NumberBase as q, type PxConvertResult as r, type SubnetInfo as s, autoFormat as t, units as u, bumpVersion as v, calcAspectRatio as w, calcSubnet as x, calculateLoan as y, compareSemver as z };
@@ -279,12 +279,30 @@ interface LoanResult {
279
279
  declare function calculateLoan(principal: number, annualRatePercent: number, termMonths: number): LoanResult | {
280
280
  error: string;
281
281
  };
282
+ type BarcodeFormat = "EAN-13" | "EAN-8" | "UPC-A";
283
+ interface BarcodeValidationResult {
284
+ valid: boolean;
285
+ format: BarcodeFormat;
286
+ digits: string;
287
+ checkDigit: number;
288
+ expectedCheckDigit: number;
289
+ }
290
+ /**
291
+ * Validate an EAN-13, EAN-8, or UPC-A barcode number via its weighted
292
+ * mod-10 check digit algorithm. The format is inferred from the digit
293
+ * count (8, 12, or 13) once spaces and hyphens are stripped.
294
+ */
295
+ declare function validateBarcode(input: string): BarcodeValidationResult | {
296
+ error: string;
297
+ };
282
298
 
283
299
  type units_AmortizationRow = AmortizationRow;
284
300
  type units_AspectRatioResult = AspectRatioResult;
285
301
  declare const units_BASE_LABELS: typeof BASE_LABELS;
286
302
  declare const units_BASE_PREFIXES: typeof BASE_PREFIXES;
287
303
  declare const units_BYTE_UNITS: typeof BYTE_UNITS;
304
+ type units_BarcodeFormat = BarcodeFormat;
305
+ type units_BarcodeValidationResult = BarcodeValidationResult;
288
306
  type units_BaseConvertResult = BaseConvertResult;
289
307
  type units_ByteConvertResult = ByteConvertResult;
290
308
  type units_ByteUnit = ByteUnit;
@@ -357,11 +375,12 @@ declare const units_scaleByWidth: typeof scaleByWidth;
357
375
  declare const units_sortVersions: typeof sortVersions;
358
376
  declare const units_splitSubnet: typeof splitSubnet;
359
377
  declare const units_symbolicToPermissions: typeof symbolicToPermissions;
378
+ declare const units_validateBarcode: typeof validateBarcode;
360
379
  declare const units_validateCardNumber: typeof validateCardNumber;
361
380
  declare const units_validateIban: typeof validateIban;
362
381
  declare const units_viewportToPx: typeof viewportToPx;
363
382
  declare namespace units {
364
- export { type units_AmortizationRow as AmortizationRow, type units_AspectRatioResult as AspectRatioResult, units_BASE_LABELS as BASE_LABELS, units_BASE_PREFIXES as BASE_PREFIXES, units_BYTE_UNITS as BYTE_UNITS, type units_BaseConvertResult as BaseConvertResult, type units_ByteConvertResult as ByteConvertResult, type units_ByteUnit as ByteUnit, units_COMMON_CURRENCIES as COMMON_CURRENCIES, units_COMMON_LOCALES as COMMON_LOCALES, units_COMMON_PERMISSIONS as COMMON_PERMISSIONS, units_COMMON_RATIOS as COMMON_RATIOS, units_COMMON_SIZES as COMMON_SIZES, units_COMMON_VIEWPORTS as COMMON_VIEWPORTS, type units_CardValidationResult as CardValidationResult, type units_Dimensions as Dimensions, type units_FilePermissions as FilePermissions, type units_FormatOptions as FormatOptions, type units_IbanValidationResult as IbanValidationResult, type units_IpConversion as IpConversion, type units_LoanResult as LoanResult, type units_NotationStyle as NotationStyle, type units_NumberBase as NumberBase, type units_Permission as Permission, type units_PxConvertResult as PxConvertResult, type units_SemverVersion as SemverVersion, type units_SubnetInfo as SubnetInfo, type units_ViewportConvertResult as ViewportConvertResult, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, units_calculateLoan as calculateLoan, units_compareSemver as compareSemver, units_convert as convert, units_convertBytes as convertBytes, units_convertIp as convertIp, units_coverBox as coverBox, units_decimalToIp as decimalToIp, units_decimalToIpCidr as decimalToIpCidr, units_describePermissions as describePermissions, units_fitIntoBox as fitIntoBox, units_formatNumber as formatNumber, units_formatValue as formatValue, units_formatVwValue as formatVwValue, units_formatWithSeparator as formatWithSeparator, units_gcd as gcd, units_ipFromBinary as ipFromBinary, units_ipFromDecimal as ipFromDecimal, units_ipFromHex as ipFromHex, units_ipToBinary as ipToBinary, units_ipToDecimal as ipToDecimal, units_ipToDecimalCidr as ipToDecimalCidr, units_ipToHex as ipToHex, units_ipToOctal as ipToOctal, units_isValid as isValid, units_isValidCidr as isValidCidr, units_isValidIp as isValidIp, units_isValidIpv4 as isValidIpv4, units_octalToPermissions as octalToPermissions, units_parseFileSize as parseFileSize, units_parseInput as parseInput, units_parseNumberString as parseNumberString, units_parseSemver as parseSemver, units_permissionsToChmod as permissionsToChmod, units_permissionsToOctal as permissionsToOctal, units_permissionsToSymbolic as permissionsToSymbolic, units_ptToPx as ptToPx, units_pxToAll as pxToAll, units_pxToViewport as pxToViewport, units_remToPx as remToPx, units_satisfiesRange as satisfiesRange, units_scaleByHeight as scaleByHeight, units_scaleByWidth as scaleByWidth, units_sortVersions as sortVersions, units_splitSubnet as splitSubnet, units_symbolicToPermissions as symbolicToPermissions, units_validateCardNumber as validateCardNumber, units_validateIban as validateIban, units_viewportToPx as viewportToPx };
383
+ export { type units_AmortizationRow as AmortizationRow, type units_AspectRatioResult as AspectRatioResult, units_BASE_LABELS as BASE_LABELS, units_BASE_PREFIXES as BASE_PREFIXES, units_BYTE_UNITS as BYTE_UNITS, type units_BarcodeFormat as BarcodeFormat, type units_BarcodeValidationResult as BarcodeValidationResult, type units_BaseConvertResult as BaseConvertResult, type units_ByteConvertResult as ByteConvertResult, type units_ByteUnit as ByteUnit, units_COMMON_CURRENCIES as COMMON_CURRENCIES, units_COMMON_LOCALES as COMMON_LOCALES, units_COMMON_PERMISSIONS as COMMON_PERMISSIONS, units_COMMON_RATIOS as COMMON_RATIOS, units_COMMON_SIZES as COMMON_SIZES, units_COMMON_VIEWPORTS as COMMON_VIEWPORTS, type units_CardValidationResult as CardValidationResult, type units_Dimensions as Dimensions, type units_FilePermissions as FilePermissions, type units_FormatOptions as FormatOptions, type units_IbanValidationResult as IbanValidationResult, type units_IpConversion as IpConversion, type units_LoanResult as LoanResult, type units_NotationStyle as NotationStyle, type units_NumberBase as NumberBase, type units_Permission as Permission, type units_PxConvertResult as PxConvertResult, type units_SemverVersion as SemverVersion, type units_SubnetInfo as SubnetInfo, type units_ViewportConvertResult as ViewportConvertResult, units_autoFormat as autoFormat, units_bumpVersion as bumpVersion, units_calcAspectRatio as calcAspectRatio, units_calcSubnet as calcSubnet, units_calculateLoan as calculateLoan, units_compareSemver as compareSemver, units_convert as convert, units_convertBytes as convertBytes, units_convertIp as convertIp, units_coverBox as coverBox, units_decimalToIp as decimalToIp, units_decimalToIpCidr as decimalToIpCidr, units_describePermissions as describePermissions, units_fitIntoBox as fitIntoBox, units_formatNumber as formatNumber, units_formatValue as formatValue, units_formatVwValue as formatVwValue, units_formatWithSeparator as formatWithSeparator, units_gcd as gcd, units_ipFromBinary as ipFromBinary, units_ipFromDecimal as ipFromDecimal, units_ipFromHex as ipFromHex, units_ipToBinary as ipToBinary, units_ipToDecimal as ipToDecimal, units_ipToDecimalCidr as ipToDecimalCidr, units_ipToHex as ipToHex, units_ipToOctal as ipToOctal, units_isValid as isValid, units_isValidCidr as isValidCidr, units_isValidIp as isValidIp, units_isValidIpv4 as isValidIpv4, units_octalToPermissions as octalToPermissions, units_parseFileSize as parseFileSize, units_parseInput as parseInput, units_parseNumberString as parseNumberString, units_parseSemver as parseSemver, units_permissionsToChmod as permissionsToChmod, units_permissionsToOctal as permissionsToOctal, units_permissionsToSymbolic as permissionsToSymbolic, units_ptToPx as ptToPx, units_pxToAll as pxToAll, units_pxToViewport as pxToViewport, units_remToPx as remToPx, units_satisfiesRange as satisfiesRange, units_scaleByHeight as scaleByHeight, units_scaleByWidth as scaleByWidth, units_sortVersions as sortVersions, units_splitSubnet as splitSubnet, units_symbolicToPermissions as symbolicToPermissions, units_validateBarcode as validateBarcode, units_validateCardNumber as validateCardNumber, units_validateIban as validateIban, units_viewportToPx as viewportToPx };
365
384
  }
366
385
 
367
- export { ipToDecimalCidr as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type Dimensions as D, convertIp as E, type FilePermissions as F, coverBox as G, decimalToIp as H, type IbanValidationResult as I, decimalToIpCidr as J, describePermissions as K, type LoanResult as L, fitIntoBox as M, type NotationStyle as N, formatNumber as O, type Permission as P, formatValue as Q, formatVwValue as R, type SemverVersion as S, formatWithSeparator as T, gcd as U, type ViewportConvertResult as V, ipFromBinary as W, ipFromDecimal as X, ipFromHex as Y, ipToBinary as Z, ipToDecimal as _, type AspectRatioResult as a, ipToHex as a0, ipToOctal as a1, isValid as a2, isValidCidr as a3, isValidIp as a4, isValidIpv4 as a5, octalToPermissions as a6, parseFileSize as a7, parseInput as a8, parseNumberString as a9, parseSemver as aa, permissionsToChmod as ab, permissionsToOctal as ac, permissionsToSymbolic as ad, ptToPx as ae, pxToAll as af, pxToViewport as ag, remToPx as ah, satisfiesRange as ai, scaleByHeight as aj, scaleByWidth as ak, sortVersions as al, splitSubnet as am, symbolicToPermissions as an, validateCardNumber as ao, validateIban as ap, viewportToPx as aq, BASE_PREFIXES as b, BYTE_UNITS as c, type BaseConvertResult as d, type ByteConvertResult as e, type ByteUnit as f, COMMON_LOCALES as g, COMMON_PERMISSIONS as h, COMMON_RATIOS as i, COMMON_SIZES as j, COMMON_VIEWPORTS as k, type CardValidationResult as l, type FormatOptions as m, type IpConversion as n, type NumberBase as o, type PxConvertResult as p, type SubnetInfo as q, autoFormat as r, bumpVersion as s, calcAspectRatio as t, units as u, calcSubnet as v, calculateLoan as w, compareSemver as x, convert as y, convertBytes as z };
386
+ export { ipToBinary as $, type AmortizationRow as A, BASE_LABELS as B, COMMON_CURRENCIES as C, type Dimensions as D, convert as E, type FilePermissions as F, convertBytes as G, convertIp as H, type IbanValidationResult as I, coverBox as J, decimalToIp as K, type LoanResult as L, decimalToIpCidr as M, type NotationStyle as N, describePermissions as O, type Permission as P, fitIntoBox as Q, formatNumber as R, type SemverVersion as S, formatValue as T, formatVwValue as U, type ViewportConvertResult as V, formatWithSeparator as W, gcd as X, ipFromBinary as Y, ipFromDecimal as Z, ipFromHex as _, type AspectRatioResult as a, ipToDecimal as a0, ipToDecimalCidr as a1, ipToHex as a2, ipToOctal as a3, isValid as a4, isValidCidr as a5, isValidIp as a6, isValidIpv4 as a7, octalToPermissions as a8, parseFileSize as a9, parseInput as aa, parseNumberString as ab, parseSemver as ac, permissionsToChmod as ad, permissionsToOctal as ae, permissionsToSymbolic as af, ptToPx as ag, pxToAll as ah, pxToViewport as ai, remToPx as aj, satisfiesRange as ak, scaleByHeight as al, scaleByWidth as am, sortVersions as an, splitSubnet as ao, symbolicToPermissions as ap, validateBarcode as aq, validateCardNumber as ar, validateIban as as, viewportToPx as at, BASE_PREFIXES as b, BYTE_UNITS as c, type BarcodeFormat as d, type BarcodeValidationResult as e, type BaseConvertResult as f, type ByteConvertResult as g, type ByteUnit as h, COMMON_LOCALES as i, COMMON_PERMISSIONS as j, COMMON_RATIOS as k, COMMON_SIZES as l, COMMON_VIEWPORTS as m, type CardValidationResult as n, type FormatOptions as o, type IpConversion as p, type NumberBase as q, type PxConvertResult as r, type SubnetInfo as s, autoFormat as t, units as u, bumpVersion as v, calcAspectRatio as w, calcSubnet as x, calculateLoan as y, compareSemver as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@utilix-tech/sdk",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "154+ developer utility tools for Node.js: JSON, encoding, hashing, color, CSS, network and more. Runs locally, no API key required.",
5
5
  "author": "Utilix <hello@utilix.tech>",
6
6
  "license": "MIT",