metadata-connect 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +196 -0
  3. package/dist/extract.d.ts +36 -0
  4. package/dist/extract.d.ts.map +1 -0
  5. package/dist/extract.js +77 -0
  6. package/dist/extract.js.map +1 -0
  7. package/dist/index.d.ts +6 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +8 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/parsers/aiff.d.ts +9 -0
  12. package/dist/parsers/aiff.d.ts.map +1 -0
  13. package/dist/parsers/aiff.js +42 -0
  14. package/dist/parsers/aiff.js.map +1 -0
  15. package/dist/parsers/flac.d.ts +6 -0
  16. package/dist/parsers/flac.d.ts.map +1 -0
  17. package/dist/parsers/flac.js +172 -0
  18. package/dist/parsers/flac.js.map +1 -0
  19. package/dist/parsers/id3.d.ts +6 -0
  20. package/dist/parsers/id3.d.ts.map +1 -0
  21. package/dist/parsers/id3.js +329 -0
  22. package/dist/parsers/id3.js.map +1 -0
  23. package/dist/parsers/index.d.ts +6 -0
  24. package/dist/parsers/index.d.ts.map +1 -0
  25. package/dist/parsers/index.js +6 -0
  26. package/dist/parsers/index.js.map +1 -0
  27. package/dist/parsers/mp4.d.ts +6 -0
  28. package/dist/parsers/mp4.d.ts.map +1 -0
  29. package/dist/parsers/mp4.js +295 -0
  30. package/dist/parsers/mp4.js.map +1 -0
  31. package/dist/parsers/utils.d.ts +40 -0
  32. package/dist/parsers/utils.d.ts.map +1 -0
  33. package/dist/parsers/utils.js +120 -0
  34. package/dist/parsers/utils.js.map +1 -0
  35. package/dist/reader.d.ts +6 -0
  36. package/dist/reader.d.ts.map +1 -0
  37. package/dist/reader.js +14 -0
  38. package/dist/reader.js.map +1 -0
  39. package/dist/types.d.ts +70 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +28 -0
  42. package/dist/types.js.map +1 -0
  43. package/package.json +75 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mp4.js","sourceRoot":"","sources":["../../src/parsers/mp4.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { ArtworkMimeType } from '../types.js';
2
+ /**
3
+ * Detect image type from magic bytes
4
+ */
5
+ export declare function detectImageType(data: Buffer): ArtworkMimeType | null;
6
+ /**
7
+ * Normalize a MIME type string to a supported artwork type
8
+ */
9
+ export declare function normalizeMimeType(mimeType: string): ArtworkMimeType;
10
+ /**
11
+ * Read a syncsafe integer (ID3v2 format)
12
+ * Each byte only uses 7 bits
13
+ */
14
+ export declare function readSyncsafe(buffer: Buffer, offset?: number): number;
15
+ /**
16
+ * Get text encoding from ID3v2 encoding byte
17
+ */
18
+ export declare function getTextEncoding(encodingByte: number): 'latin1' | 'utf8' | 'utf16le' | 'utf16be';
19
+ /**
20
+ * Read a null-terminated string from a buffer
21
+ */
22
+ export declare function readNullTerminatedString(buffer: Buffer, offset: number, encoding: 'latin1' | 'utf8' | 'utf16le' | 'utf16be'): {
23
+ value: string;
24
+ bytesConsumed: number;
25
+ };
26
+ /**
27
+ * Parse a BPM string to a number
28
+ * Handles formats like "128", "128.5", "128 BPM"
29
+ */
30
+ export declare function parseBpm(value: string): number | undefined;
31
+ /**
32
+ * Parse a year string to a number
33
+ * Handles formats like "2024", "2024-01-15", "2024/01/15"
34
+ */
35
+ export declare function parseYear(value: string): number | undefined;
36
+ /**
37
+ * Clean up text by removing null characters and trimming
38
+ */
39
+ export declare function cleanText(value: string | undefined): string | undefined;
40
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/parsers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAMpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAKnE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,CAOvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,GACnB,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAa3C;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAClD;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CA0B1C;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM1D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM3D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKvE"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Detect image type from magic bytes
3
+ */
4
+ export function detectImageType(data) {
5
+ if (data.length < 4)
6
+ return null;
7
+ if (data[0] === 0xff && data[1] === 0xd8 && data[2] === 0xff)
8
+ return 'image/jpeg';
9
+ if (data[0] === 0x89 && data.toString('ascii', 1, 4) === 'PNG')
10
+ return 'image/png';
11
+ if (data.toString('ascii', 0, 3) === 'GIF')
12
+ return 'image/gif';
13
+ return null;
14
+ }
15
+ /**
16
+ * Normalize a MIME type string to a supported artwork type
17
+ */
18
+ export function normalizeMimeType(mimeType) {
19
+ const lower = mimeType.toLowerCase();
20
+ if (lower.includes('png'))
21
+ return 'image/png';
22
+ if (lower.includes('gif'))
23
+ return 'image/gif';
24
+ return 'image/jpeg';
25
+ }
26
+ /**
27
+ * Read a syncsafe integer (ID3v2 format)
28
+ * Each byte only uses 7 bits
29
+ */
30
+ export function readSyncsafe(buffer, offset = 0) {
31
+ return (((buffer[offset] & 0x7f) << 21) |
32
+ ((buffer[offset + 1] & 0x7f) << 14) |
33
+ ((buffer[offset + 2] & 0x7f) << 7) |
34
+ (buffer[offset + 3] & 0x7f));
35
+ }
36
+ /**
37
+ * Get text encoding from ID3v2 encoding byte
38
+ */
39
+ export function getTextEncoding(encodingByte) {
40
+ switch (encodingByte) {
41
+ case 0:
42
+ return 'latin1';
43
+ case 1:
44
+ return 'utf16le';
45
+ case 2:
46
+ return 'utf16be';
47
+ case 3:
48
+ return 'utf8';
49
+ default:
50
+ return 'latin1';
51
+ }
52
+ }
53
+ /**
54
+ * Read a null-terminated string from a buffer
55
+ */
56
+ export function readNullTerminatedString(buffer, offset, encoding) {
57
+ const isUtf16 = encoding === 'utf16le' || encoding === 'utf16be';
58
+ let end = offset;
59
+ if (isUtf16) {
60
+ while (end < buffer.length - 1) {
61
+ if (buffer[end] === 0 && buffer[end + 1] === 0)
62
+ break;
63
+ end += 2;
64
+ }
65
+ }
66
+ else {
67
+ while (end < buffer.length && buffer[end] !== 0)
68
+ end++;
69
+ }
70
+ let value;
71
+ if (encoding === 'utf16be') {
72
+ const swapped = Buffer.alloc(end - offset);
73
+ for (let i = 0; i < end - offset; i += 2) {
74
+ swapped[i] = buffer[offset + i + 1];
75
+ swapped[i + 1] = buffer[offset + i];
76
+ }
77
+ value = swapped.toString('utf16le');
78
+ }
79
+ else {
80
+ value = buffer.toString(encoding === 'utf16le' ? 'utf16le' : encoding, offset, end);
81
+ }
82
+ return { value, bytesConsumed: end - offset + (isUtf16 ? 2 : 1) };
83
+ }
84
+ /**
85
+ * Parse a BPM string to a number
86
+ * Handles formats like "128", "128.5", "128 BPM"
87
+ */
88
+ export function parseBpm(value) {
89
+ const match = value.match(/[\d.]+/);
90
+ if (!match)
91
+ return undefined;
92
+ const num = parseFloat(match[0]);
93
+ if (isNaN(num) || num <= 0 || num > 500)
94
+ return undefined;
95
+ return Math.round(num * 10) / 10; // Round to 1 decimal place
96
+ }
97
+ /**
98
+ * Parse a year string to a number
99
+ * Handles formats like "2024", "2024-01-15", "2024/01/15"
100
+ */
101
+ export function parseYear(value) {
102
+ const match = value.match(/\d{4}/);
103
+ if (!match)
104
+ return undefined;
105
+ const year = parseInt(match[0], 10);
106
+ if (year < 1900 || year > 2100)
107
+ return undefined;
108
+ return year;
109
+ }
110
+ /**
111
+ * Clean up text by removing null characters and trimming
112
+ */
113
+ export function cleanText(value) {
114
+ if (!value)
115
+ return undefined;
116
+ // Remove null characters and trim
117
+ const cleaned = value.replace(/\0/g, '').trim();
118
+ return cleaned.length > 0 ? cleaned : undefined;
119
+ }
120
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/parsers/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { FileReader } from './types.js';
2
+ /**
3
+ * Create a FileReader from a Buffer (for testing or in-memory data)
4
+ */
5
+ export declare function createBufferReader(buffer: Buffer, extension: string): FileReader;
6
+ //# sourceMappingURL=reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAShF"}
package/dist/reader.js ADDED
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Create a FileReader from a Buffer (for testing or in-memory data)
3
+ */
4
+ export function createBufferReader(buffer, extension) {
5
+ return {
6
+ size: buffer.length,
7
+ extension,
8
+ read: (offset, length) => {
9
+ const end = Math.min(offset + length, buffer.length);
10
+ return Promise.resolve(buffer.subarray(offset, end));
11
+ },
12
+ };
13
+ }
14
+ //# sourceMappingURL=reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,SAAiB;IAClE,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,SAAS;QACT,IAAI,EAAE,CAAC,MAAc,EAAE,MAAc,EAAmB,EAAE;YACxD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACrD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QACvD,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Interface for reading file data at arbitrary offsets.
3
+ * This allows extracting metadata from remote files by reading only the necessary bytes.
4
+ */
5
+ export interface FileReader {
6
+ /** Total file size in bytes */
7
+ readonly size: number;
8
+ /** File extension (without dot), e.g., 'mp3', 'flac', 'm4a' */
9
+ readonly extension: string;
10
+ /** Read bytes from the file at a given offset */
11
+ read(offset: number, length: number): Promise<Buffer>;
12
+ }
13
+ /**
14
+ * Standard picture types from ID3v2 / FLAC specs
15
+ */
16
+ export declare enum PictureType {
17
+ Other = 0,
18
+ FileIcon32x32 = 1,
19
+ OtherFileIcon = 2,
20
+ FrontCover = 3,
21
+ BackCover = 4,
22
+ LeafletPage = 5,
23
+ Media = 6,
24
+ LeadArtist = 7,
25
+ Artist = 8,
26
+ Conductor = 9,
27
+ Band = 10,
28
+ Composer = 11,
29
+ Lyricist = 12,
30
+ RecordingLocation = 13,
31
+ DuringRecording = 14,
32
+ DuringPerformance = 15,
33
+ MovieScreenCapture = 16,
34
+ BrightColoredFish = 17,
35
+ Illustration = 18,
36
+ BandLogotype = 19,
37
+ PublisherLogotype = 20
38
+ }
39
+ /**
40
+ * MIME types supported for artwork
41
+ */
42
+ export type ArtworkMimeType = 'image/jpeg' | 'image/png' | 'image/gif';
43
+ /**
44
+ * Extracted metadata from an audio file
45
+ */
46
+ export interface ExtractedMetadata {
47
+ /** Track title */
48
+ title?: string;
49
+ /** Artist name */
50
+ artist?: string;
51
+ /** Album name */
52
+ album?: string;
53
+ /** Genre */
54
+ genre?: string;
55
+ /** Release year */
56
+ year?: number;
57
+ /** Beats per minute */
58
+ bpm?: number;
59
+ /** Musical key (e.g., "Am", "C#m", "5A") */
60
+ key?: string;
61
+ /** Artwork image data */
62
+ artwork?: Buffer;
63
+ /** MIME type of the artwork */
64
+ artworkMimeType?: ArtworkMimeType;
65
+ }
66
+ /**
67
+ * Parser function signature
68
+ */
69
+ export type MetadataParser = (reader: FileReader) => Promise<ExtractedMetadata | null>;
70
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iDAAiD;IACjD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvD;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,KAAK,IAAI;IACT,aAAa,IAAI;IACjB,aAAa,IAAI;IACjB,UAAU,IAAI;IACd,SAAS,IAAI;IACb,WAAW,IAAI;IACf,KAAK,IAAI;IACT,UAAU,IAAI;IACd,MAAM,IAAI;IACV,SAAS,IAAI;IACb,IAAI,KAAK;IACT,QAAQ,KAAK;IACb,QAAQ,KAAK;IACb,iBAAiB,KAAK;IACtB,eAAe,KAAK;IACpB,iBAAiB,KAAK;IACtB,kBAAkB,KAAK;IACvB,iBAAiB,KAAK;IACtB,YAAY,KAAK;IACjB,YAAY,KAAK;IACjB,iBAAiB,KAAK;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Standard picture types from ID3v2 / FLAC specs
3
+ */
4
+ export var PictureType;
5
+ (function (PictureType) {
6
+ PictureType[PictureType["Other"] = 0] = "Other";
7
+ PictureType[PictureType["FileIcon32x32"] = 1] = "FileIcon32x32";
8
+ PictureType[PictureType["OtherFileIcon"] = 2] = "OtherFileIcon";
9
+ PictureType[PictureType["FrontCover"] = 3] = "FrontCover";
10
+ PictureType[PictureType["BackCover"] = 4] = "BackCover";
11
+ PictureType[PictureType["LeafletPage"] = 5] = "LeafletPage";
12
+ PictureType[PictureType["Media"] = 6] = "Media";
13
+ PictureType[PictureType["LeadArtist"] = 7] = "LeadArtist";
14
+ PictureType[PictureType["Artist"] = 8] = "Artist";
15
+ PictureType[PictureType["Conductor"] = 9] = "Conductor";
16
+ PictureType[PictureType["Band"] = 10] = "Band";
17
+ PictureType[PictureType["Composer"] = 11] = "Composer";
18
+ PictureType[PictureType["Lyricist"] = 12] = "Lyricist";
19
+ PictureType[PictureType["RecordingLocation"] = 13] = "RecordingLocation";
20
+ PictureType[PictureType["DuringRecording"] = 14] = "DuringRecording";
21
+ PictureType[PictureType["DuringPerformance"] = 15] = "DuringPerformance";
22
+ PictureType[PictureType["MovieScreenCapture"] = 16] = "MovieScreenCapture";
23
+ PictureType[PictureType["BrightColoredFish"] = 17] = "BrightColoredFish";
24
+ PictureType[PictureType["Illustration"] = 18] = "Illustration";
25
+ PictureType[PictureType["BandLogotype"] = 19] = "BandLogotype";
26
+ PictureType[PictureType["PublisherLogotype"] = 20] = "PublisherLogotype";
27
+ })(PictureType || (PictureType = {}));
28
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,MAAM,CAAN,IAAY,WAsBX;AAtBD,WAAY,WAAW;IACrB,+CAAS,CAAA;IACT,+DAAiB,CAAA;IACjB,+DAAiB,CAAA;IACjB,yDAAc,CAAA;IACd,uDAAa,CAAA;IACb,2DAAe,CAAA;IACf,+CAAS,CAAA;IACT,yDAAc,CAAA;IACd,iDAAU,CAAA;IACV,uDAAa,CAAA;IACb,8CAAS,CAAA;IACT,sDAAa,CAAA;IACb,sDAAa,CAAA;IACb,wEAAsB,CAAA;IACtB,oEAAoB,CAAA;IACpB,wEAAsB,CAAA;IACtB,0EAAuB,CAAA;IACvB,wEAAsB,CAAA;IACtB,8DAAiB,CAAA;IACjB,8DAAiB,CAAA;IACjB,wEAAsB,CAAA;AACxB,CAAC,EAtBW,WAAW,KAAX,WAAW,QAsBtB"}
package/package.json ADDED
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "metadata-connect",
3
+ "version": "1.1.0",
4
+ "description": "Extract audio metadata (title, artist, album, BPM, key, artwork) from MP3, M4A, FLAC, and AIFF files with minimal network transfer using partial file reads",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "type": "module",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "README.md",
19
+ "LICENSE"
20
+ ],
21
+ "scripts": {
22
+ "build": "tsc",
23
+ "watch": "tsc --watch",
24
+ "clean": "rm -rf dist",
25
+ "test": "vitest run",
26
+ "test:watch": "vitest",
27
+ "test:coverage": "vitest run --coverage",
28
+ "prepublishOnly": "npm run clean && npm run build && npm test"
29
+ },
30
+ "keywords": [
31
+ "metadata",
32
+ "audio",
33
+ "music",
34
+ "id3",
35
+ "id3v2",
36
+ "mp4",
37
+ "m4a",
38
+ "flac",
39
+ "aiff",
40
+ "mp3",
41
+ "aac",
42
+ "artwork",
43
+ "cover",
44
+ "album-art",
45
+ "bpm",
46
+ "tempo",
47
+ "key",
48
+ "genre",
49
+ "parser",
50
+ "extractor",
51
+ "dj",
52
+ "streaming",
53
+ "partial-read",
54
+ "network"
55
+ ],
56
+ "author": "Chris Le <chris@triodemusic.com>",
57
+ "license": "MIT",
58
+ "repository": {
59
+ "type": "git",
60
+ "url": "git+https://github.com/chrisle/metadata-connect.git"
61
+ },
62
+ "homepage": "https://github.com/chrisle/metadata-connect#readme",
63
+ "bugs": {
64
+ "url": "https://github.com/chrisle/metadata-connect/issues"
65
+ },
66
+ "engines": {
67
+ "node": ">=18.0.0"
68
+ },
69
+ "devDependencies": {
70
+ "@types/node": "^22.15.29",
71
+ "@vitest/coverage-v8": "^4.0.16",
72
+ "typescript": "^5.9.3",
73
+ "vitest": "^4.0.16"
74
+ }
75
+ }