taglib-wasm 0.3.13 → 0.3.15

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 (82) hide show
  1. package/README.md +22 -35
  2. package/dist/index.d.ts +10 -10
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +117 -134
  5. package/dist/index.js.map +1 -0
  6. package/dist/src/constants.js +211 -0
  7. package/dist/src/constants.js.map +1 -0
  8. package/dist/src/errors.js +180 -0
  9. package/dist/src/errors.js.map +1 -0
  10. package/dist/src/file-utils.d.ts +2 -2
  11. package/dist/src/file-utils.d.ts.map +1 -1
  12. package/dist/src/file-utils.js +394 -0
  13. package/dist/src/file-utils.js.map +1 -0
  14. package/dist/src/mod.d.ts +4 -4
  15. package/dist/src/mod.d.ts.map +1 -1
  16. package/dist/src/mod.js +7 -0
  17. package/dist/src/mod.js.map +1 -0
  18. package/dist/src/simple.d.ts +4 -4
  19. package/dist/src/simple.d.ts.map +1 -1
  20. package/dist/src/{simple.ts → simple.js} +193 -311
  21. package/dist/src/simple.js.map +1 -0
  22. package/dist/src/taglib.d.ts +3 -3
  23. package/dist/src/taglib.d.ts.map +1 -1
  24. package/dist/src/taglib.js +516 -0
  25. package/dist/src/taglib.js.map +1 -0
  26. package/dist/src/types.d.ts +2 -2
  27. package/dist/src/types.d.ts.map +1 -1
  28. package/dist/src/types.js +239 -0
  29. package/dist/src/types.js.map +1 -0
  30. package/dist/src/utils/file.js +65 -0
  31. package/dist/src/utils/file.js.map +1 -0
  32. package/dist/src/utils/write.js +49 -0
  33. package/dist/src/utils/write.js.map +1 -0
  34. package/dist/src/wasm-workers.d.ts +1 -1
  35. package/dist/src/wasm-workers.d.ts.map +1 -1
  36. package/dist/src/wasm-workers.js +148 -0
  37. package/dist/src/wasm-workers.js.map +1 -0
  38. package/dist/src/wasm.js +6 -0
  39. package/dist/src/wasm.js.map +1 -0
  40. package/dist/src/web-utils.d.ts +2 -2
  41. package/dist/src/web-utils.d.ts.map +1 -1
  42. package/{src/web-utils.ts → dist/src/web-utils.js} +102 -184
  43. package/dist/src/web-utils.js.map +1 -0
  44. package/dist/src/workers.d.ts +2 -2
  45. package/dist/src/workers.d.ts.map +1 -1
  46. package/dist/src/workers.js +389 -0
  47. package/dist/src/workers.js.map +1 -0
  48. package/dist/taglib-wrapper.js +8 -2528
  49. package/package.json +7 -10
  50. package/dist/index.ts +0 -221
  51. package/dist/src/constants.ts +0 -227
  52. package/dist/src/errors.ts +0 -254
  53. package/dist/src/file-utils.ts +0 -483
  54. package/dist/src/file.js +0 -52
  55. package/dist/src/global.d.ts +0 -12
  56. package/dist/src/mod.ts +0 -19
  57. package/dist/src/taglib.ts +0 -961
  58. package/dist/src/types.ts +0 -538
  59. package/dist/src/utils/file.ts +0 -86
  60. package/dist/src/utils/write.ts +0 -66
  61. package/dist/src/wasm-workers.ts +0 -176
  62. package/dist/src/wasm.ts +0 -133
  63. package/dist/src/web-utils.ts +0 -347
  64. package/dist/src/workers.ts +0 -461
  65. package/dist/src/write.js +0 -33
  66. package/index.ts +0 -221
  67. package/lib/taglib/COPYING.LGPL +0 -502
  68. package/lib/taglib/COPYING.MPL +0 -470
  69. package/lib/taglib/README.md +0 -24
  70. package/src/constants.ts +0 -227
  71. package/src/errors.ts +0 -254
  72. package/src/file-utils.ts +0 -483
  73. package/src/global.d.ts +0 -12
  74. package/src/mod.ts +0 -19
  75. package/src/simple.ts +0 -667
  76. package/src/taglib.ts +0 -961
  77. package/src/types.ts +0 -538
  78. package/src/utils/file.ts +0 -86
  79. package/src/utils/write.ts +0 -66
  80. package/src/wasm-workers.ts +0 -176
  81. package/src/wasm.ts +0 -133
  82. package/src/workers.ts +0 -461
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Custom error types for taglib-wasm with enhanced context and debugging information
3
+ */
4
+ /**
5
+ * List of audio formats supported by taglib-wasm
6
+ */
7
+ export const SUPPORTED_FORMATS = [
8
+ "MP3",
9
+ "MP4",
10
+ "M4A",
11
+ "FLAC",
12
+ "OGG",
13
+ "WAV",
14
+ ];
15
+ /**
16
+ * Error codes for programmatic error handling
17
+ */
18
+ export var TagLibErrorCode;
19
+ (function (TagLibErrorCode) {
20
+ TagLibErrorCode["INITIALIZATION_FAILED"] = "INITIALIZATION_FAILED";
21
+ TagLibErrorCode["INVALID_FORMAT"] = "INVALID_FORMAT";
22
+ TagLibErrorCode["UNSUPPORTED_FORMAT"] = "UNSUPPORTED_FORMAT";
23
+ TagLibErrorCode["FILE_OPERATION_FAILED"] = "FILE_OPERATION_FAILED";
24
+ TagLibErrorCode["METADATA_ERROR"] = "METADATA_ERROR";
25
+ TagLibErrorCode["MEMORY_ERROR"] = "MEMORY_ERROR";
26
+ TagLibErrorCode["ENVIRONMENT_ERROR"] = "ENVIRONMENT_ERROR";
27
+ })(TagLibErrorCode || (TagLibErrorCode = {}));
28
+ /**
29
+ * Base error class for all taglib-wasm errors
30
+ */
31
+ export class TagLibError extends Error {
32
+ constructor(message, code, context) {
33
+ super(message);
34
+ this.code = code;
35
+ this.context = context;
36
+ this.name = "TagLibError";
37
+ Object.setPrototypeOf(this, TagLibError.prototype);
38
+ }
39
+ }
40
+ /**
41
+ * Error thrown when the Wasm module fails to initialize
42
+ */
43
+ export class TagLibInitializationError extends TagLibError {
44
+ constructor(message, context) {
45
+ super(createErrorMessage("Failed to initialize TagLib Wasm module", message), TagLibErrorCode.INITIALIZATION_FAILED, context);
46
+ this.name = "TagLibInitializationError";
47
+ Object.setPrototypeOf(this, TagLibInitializationError.prototype);
48
+ }
49
+ }
50
+ /**
51
+ * Error thrown when an audio file format is invalid or corrupted
52
+ */
53
+ export class InvalidFormatError extends TagLibError {
54
+ constructor(message, bufferSize, context) {
55
+ const details = [`Invalid audio file format: ${message}`];
56
+ if (bufferSize !== undefined) {
57
+ details.push(`Buffer size: ${formatFileSize(bufferSize)}`);
58
+ if (bufferSize < 1024) {
59
+ details.push("Audio files must be at least 1KB to contain valid headers.");
60
+ }
61
+ }
62
+ super(details.join(". "), TagLibErrorCode.INVALID_FORMAT, { ...context, bufferSize });
63
+ this.bufferSize = bufferSize;
64
+ this.name = "InvalidFormatError";
65
+ Object.setPrototypeOf(this, InvalidFormatError.prototype);
66
+ }
67
+ }
68
+ /**
69
+ * Error thrown when an audio format is recognized but not supported
70
+ */
71
+ export class UnsupportedFormatError extends TagLibError {
72
+ constructor(format, supportedFormats = SUPPORTED_FORMATS, context) {
73
+ super(`Unsupported audio format: ${format}. Supported formats: ${supportedFormats.join(", ")}`, TagLibErrorCode.UNSUPPORTED_FORMAT, { ...context, format, supportedFormats });
74
+ this.format = format;
75
+ this.supportedFormats = supportedFormats;
76
+ this.name = "UnsupportedFormatError";
77
+ Object.setPrototypeOf(this, UnsupportedFormatError.prototype);
78
+ }
79
+ }
80
+ /**
81
+ * Error thrown during file operations (read, write, save)
82
+ */
83
+ export class FileOperationError extends TagLibError {
84
+ constructor(operation, message, path, context) {
85
+ const details = [`Failed to ${operation} file`];
86
+ if (path) {
87
+ details.push(`Path: ${path}`);
88
+ }
89
+ details.push(message);
90
+ super(details.join(". "), TagLibErrorCode.FILE_OPERATION_FAILED, { ...context, operation, path });
91
+ this.operation = operation;
92
+ this.path = path;
93
+ this.name = "FileOperationError";
94
+ Object.setPrototypeOf(this, FileOperationError.prototype);
95
+ }
96
+ }
97
+ /**
98
+ * Error thrown when metadata operations fail
99
+ */
100
+ export class MetadataError extends TagLibError {
101
+ constructor(operation, message, field, context) {
102
+ const details = [`Failed to ${operation} metadata`];
103
+ if (field) {
104
+ details.push(`Field: ${field}`);
105
+ }
106
+ details.push(message);
107
+ super(details.join(". "), TagLibErrorCode.METADATA_ERROR, { ...context, operation, field });
108
+ this.operation = operation;
109
+ this.field = field;
110
+ this.name = "MetadataError";
111
+ Object.setPrototypeOf(this, MetadataError.prototype);
112
+ }
113
+ }
114
+ /**
115
+ * Error thrown when Wasm memory operations fail
116
+ */
117
+ export class MemoryError extends TagLibError {
118
+ constructor(message, context) {
119
+ super(createErrorMessage("Memory allocation failed", message), TagLibErrorCode.MEMORY_ERROR, context);
120
+ this.name = "MemoryError";
121
+ Object.setPrototypeOf(this, MemoryError.prototype);
122
+ }
123
+ }
124
+ /**
125
+ * Error thrown when the environment doesn't support required features
126
+ */
127
+ export class EnvironmentError extends TagLibError {
128
+ constructor(environment, message, requiredFeature, context) {
129
+ const details = [`Environment '${environment}' ${message}`];
130
+ if (requiredFeature) {
131
+ details.push(`Required feature: ${requiredFeature}`);
132
+ }
133
+ super(details.join(". "), TagLibErrorCode.ENVIRONMENT_ERROR, { ...context, environment, requiredFeature });
134
+ this.environment = environment;
135
+ this.requiredFeature = requiredFeature;
136
+ this.name = "EnvironmentError";
137
+ Object.setPrototypeOf(this, EnvironmentError.prototype);
138
+ }
139
+ }
140
+ /**
141
+ * Helper function to create consistent error messages
142
+ */
143
+ function createErrorMessage(prefix, details) {
144
+ return `${prefix}: ${details}`;
145
+ }
146
+ /**
147
+ * Format file size in human-readable format
148
+ */
149
+ function formatFileSize(bytes) {
150
+ if (bytes < 1024)
151
+ return `${bytes} bytes`;
152
+ if (bytes < 1024 * 1024)
153
+ return `${(bytes / 1024).toFixed(1)} KB`;
154
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
155
+ }
156
+ /**
157
+ * Type guards for error handling
158
+ */
159
+ export function isTagLibError(error) {
160
+ return error instanceof TagLibError;
161
+ }
162
+ export function isInvalidFormatError(error) {
163
+ return error instanceof InvalidFormatError;
164
+ }
165
+ export function isUnsupportedFormatError(error) {
166
+ return error instanceof UnsupportedFormatError;
167
+ }
168
+ export function isFileOperationError(error) {
169
+ return error instanceof FileOperationError;
170
+ }
171
+ export function isMetadataError(error) {
172
+ return error instanceof MetadataError;
173
+ }
174
+ export function isMemoryError(error) {
175
+ return error instanceof MemoryError;
176
+ }
177
+ export function isEnvironmentError(error) {
178
+ return error instanceof EnvironmentError;
179
+ }
180
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
@@ -15,8 +15,8 @@
15
15
  * await importCoverArt("song.mp3", "new-cover.png");
16
16
  * ```
17
17
  */
18
- import type { Picture } from "./types.ts";
19
- import { PictureType } from "./types.ts";
18
+ import type { Picture } from "./types";
19
+ import { PictureType } from "./types";
20
20
  /**
21
21
  * Export cover art from an audio file to an image file
22
22
  *
@@ -1 +1 @@
1
- {"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/file-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAWzC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACrD,GACL,OAAO,CAAC,MAAM,EAAE,CAAC,CAgDnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,WAAoC,EAC1C,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC,OAAO,CAAC,CAwBlB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,GACL,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC,CA6DD"}
1
+ {"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/file-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAWtC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACrD,GACL,OAAO,CAAC,MAAM,EAAE,CAAC,CAgDnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,WAAoC,EAC1C,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,OAAO,CAAC,OAAO,CAAC,CAwBlB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,GACL,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC,CA6DD"}
@@ -0,0 +1,394 @@
1
+ /**
2
+ * @fileoverview File I/O utilities for working with cover art in taglib-wasm
3
+ *
4
+ * This module provides file system helpers for saving and loading cover art
5
+ * in Node.js, Deno, and Bun environments.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { exportCoverArt, importCoverArt } from "taglib-wasm/file-utils";
10
+ *
11
+ * // Export cover art from audio file to image file
12
+ * await exportCoverArt("song.mp3", "cover.jpg");
13
+ *
14
+ * // Import cover art from image file to audio file
15
+ * await importCoverArt("song.mp3", "new-cover.png");
16
+ * ```
17
+ */
18
+ import { PictureType } from "./types.js";
19
+ import { applyPictures, getCoverArt, readPictures, replacePictureByType, setCoverArt, } from "./simple.js";
20
+ import { readFileData } from "./utils/file.js";
21
+ import { writeFileData } from "./utils/write.js";
22
+ /**
23
+ * Export cover art from an audio file to an image file
24
+ *
25
+ * Extracts the primary cover art (front cover if available, otherwise first picture)
26
+ * and saves it to the specified path.
27
+ *
28
+ * @param audioPath - Path to the audio file
29
+ * @param imagePath - Path where the image should be saved
30
+ * @returns Promise that resolves when the image is saved
31
+ * @throws Error if no cover art is found
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * // Export cover art as JPEG
36
+ * await exportCoverArt("album/track01.mp3", "album/cover.jpg");
37
+ * ```
38
+ */
39
+ export async function exportCoverArt(audioPath, imagePath) {
40
+ const coverData = await getCoverArt(audioPath);
41
+ if (!coverData) {
42
+ throw new Error(`No cover art found in: ${audioPath}`);
43
+ }
44
+ await writeFileData(imagePath, coverData);
45
+ }
46
+ /**
47
+ * Export a specific picture type from an audio file
48
+ *
49
+ * @param audioPath - Path to the audio file
50
+ * @param imagePath - Path where the image should be saved
51
+ * @param type - Picture type to export
52
+ * @returns Promise that resolves when the image is saved
53
+ * @throws Error if no picture of the specified type is found
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * // Export back cover
58
+ * await exportPictureByType(
59
+ * "album/track01.mp3",
60
+ * "album/back-cover.jpg",
61
+ * PictureType.BackCover
62
+ * );
63
+ * ```
64
+ */
65
+ export async function exportPictureByType(audioPath, imagePath, type) {
66
+ const pictures = await readPictures(audioPath);
67
+ const picture = pictures.find((pic) => pic.type === type);
68
+ if (!picture) {
69
+ throw new Error(`No picture of type ${type} found in: ${audioPath}`);
70
+ }
71
+ await writeFileData(imagePath, picture.data);
72
+ }
73
+ /**
74
+ * Export all pictures from an audio file
75
+ *
76
+ * Saves each picture with a numbered suffix based on its type and index.
77
+ *
78
+ * @param audioPath - Path to the audio file
79
+ * @param outputDir - Directory where images should be saved
80
+ * @param options - Export options
81
+ * @returns Promise resolving to array of created file paths
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * // Export all pictures to a directory
86
+ * const files = await exportAllPictures("song.mp3", "./artwork/");
87
+ * console.log(`Exported ${files.length} pictures`);
88
+ * ```
89
+ */
90
+ export async function exportAllPictures(audioPath, outputDir, options = {}) {
91
+ const pictures = await readPictures(audioPath);
92
+ const exportedPaths = [];
93
+ // Ensure directory ends with separator
94
+ const dir = outputDir.endsWith("/") ? outputDir : outputDir + "/";
95
+ for (let i = 0; i < pictures.length; i++) {
96
+ const picture = pictures[i];
97
+ // Determine filename
98
+ let filename;
99
+ if (options.nameFormat) {
100
+ filename = options.nameFormat(picture, i);
101
+ }
102
+ else {
103
+ // Default naming: type-index.ext
104
+ const typeNames = {
105
+ [PictureType.FrontCover]: "front-cover",
106
+ [PictureType.BackCover]: "back-cover",
107
+ [PictureType.LeafletPage]: "leaflet",
108
+ [PictureType.Media]: "media",
109
+ [PictureType.LeadArtist]: "lead-artist",
110
+ [PictureType.Artist]: "artist",
111
+ [PictureType.Conductor]: "conductor",
112
+ [PictureType.Band]: "band",
113
+ [PictureType.Composer]: "composer",
114
+ [PictureType.Lyricist]: "lyricist",
115
+ [PictureType.RecordingLocation]: "recording-location",
116
+ [PictureType.DuringRecording]: "during-recording",
117
+ [PictureType.DuringPerformance]: "during-performance",
118
+ [PictureType.MovieScreenCapture]: "screen-capture",
119
+ [PictureType.ColouredFish]: "fish",
120
+ [PictureType.Illustration]: "illustration",
121
+ [PictureType.BandLogo]: "band-logo",
122
+ [PictureType.PublisherLogo]: "publisher-logo",
123
+ };
124
+ const typeName = typeNames[picture.type] || "other";
125
+ const ext = picture.mimeType.split("/")[1] || "jpg";
126
+ filename = `${typeName}-${i + 1}.${ext}`;
127
+ }
128
+ const fullPath = dir + filename;
129
+ await writeFileData(fullPath, picture.data);
130
+ exportedPaths.push(fullPath);
131
+ }
132
+ return exportedPaths;
133
+ }
134
+ /**
135
+ * Import cover art from an image file to an audio file
136
+ *
137
+ * Replaces all existing pictures with a single front cover from the image file.
138
+ * The audio file is modified in place.
139
+ *
140
+ * @param audioPath - Path to the audio file to update
141
+ * @param imagePath - Path to the image file to import
142
+ * @param options - Import options
143
+ * @returns Promise that resolves when the audio file is updated
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * // Replace cover art with a new image
148
+ * await importCoverArt("song.mp3", "new-cover.jpg");
149
+ * ```
150
+ */
151
+ export async function importCoverArt(audioPath, imagePath, options = {}) {
152
+ const imageData = await readFileData(imagePath);
153
+ // Detect MIME type from file extension if not provided
154
+ let mimeType = options.mimeType;
155
+ if (!mimeType) {
156
+ const ext = imagePath.split(".").pop()?.toLowerCase();
157
+ const mimeTypes = {
158
+ "jpg": "image/jpeg",
159
+ "jpeg": "image/jpeg",
160
+ "png": "image/png",
161
+ "gif": "image/gif",
162
+ "webp": "image/webp",
163
+ "bmp": "image/bmp",
164
+ };
165
+ mimeType = mimeTypes[ext || ""] || "image/jpeg";
166
+ }
167
+ const modifiedBuffer = await setCoverArt(audioPath, imageData, mimeType);
168
+ await writeFileData(audioPath, modifiedBuffer);
169
+ }
170
+ /**
171
+ * Import a picture from file with specific type
172
+ *
173
+ * Adds or replaces a picture of the specified type in the audio file.
174
+ * The audio file is modified in place.
175
+ *
176
+ * @param audioPath - Path to the audio file to update
177
+ * @param imagePath - Path to the image file to import
178
+ * @param type - Picture type to set
179
+ * @param options - Import options
180
+ * @returns Promise that resolves when the audio file is updated
181
+ *
182
+ * @example
183
+ * ```typescript
184
+ * // Add a back cover
185
+ * await importPictureWithType(
186
+ * "song.mp3",
187
+ * "back-cover.jpg",
188
+ * PictureType.BackCover,
189
+ * { description: "Album back cover" }
190
+ * );
191
+ * ```
192
+ */
193
+ export async function importPictureWithType(audioPath, imagePath, type, options = {}) {
194
+ const imageData = await readFileData(imagePath);
195
+ // Detect MIME type from file extension if not provided
196
+ let mimeType = options.mimeType;
197
+ if (!mimeType) {
198
+ const ext = imagePath.split(".").pop()?.toLowerCase();
199
+ const mimeTypes = {
200
+ "jpg": "image/jpeg",
201
+ "jpeg": "image/jpeg",
202
+ "png": "image/png",
203
+ "gif": "image/gif",
204
+ "webp": "image/webp",
205
+ "bmp": "image/bmp",
206
+ };
207
+ mimeType = mimeTypes[ext || ""] || "image/jpeg";
208
+ }
209
+ const picture = {
210
+ mimeType,
211
+ data: imageData,
212
+ type,
213
+ description: options.description,
214
+ };
215
+ const modifiedBuffer = await replacePictureByType(audioPath, picture);
216
+ await writeFileData(audioPath, modifiedBuffer);
217
+ }
218
+ /**
219
+ * Load a picture from an image file
220
+ *
221
+ * @param imagePath - Path to the image file
222
+ * @param type - Picture type (defaults to FrontCover)
223
+ * @param options - Picture options
224
+ * @returns Picture object ready to be applied to audio files
225
+ *
226
+ * @example
227
+ * ```typescript
228
+ * const frontCover = await loadPictureFromFile("cover.jpg");
229
+ * const backCover = await loadPictureFromFile("back.png", PictureType.BackCover);
230
+ *
231
+ * const modifiedBuffer = await applyPictures("song.mp3", [frontCover, backCover]);
232
+ * ```
233
+ */
234
+ export async function loadPictureFromFile(imagePath, type = PictureType.FrontCover, options = {}) {
235
+ const data = await readFileData(imagePath);
236
+ // Detect MIME type from file extension if not provided
237
+ let mimeType = options.mimeType;
238
+ if (!mimeType) {
239
+ const ext = imagePath.split(".").pop()?.toLowerCase();
240
+ const mimeTypes = {
241
+ "jpg": "image/jpeg",
242
+ "jpeg": "image/jpeg",
243
+ "png": "image/png",
244
+ "gif": "image/gif",
245
+ "webp": "image/webp",
246
+ "bmp": "image/bmp",
247
+ };
248
+ mimeType = mimeTypes[ext || ""] || "image/jpeg";
249
+ }
250
+ return {
251
+ mimeType,
252
+ data,
253
+ type,
254
+ description: options.description || imagePath.split("/").pop(),
255
+ };
256
+ }
257
+ /**
258
+ * Save a picture to an image file
259
+ *
260
+ * @param picture - Picture object to save
261
+ * @param imagePath - Path where the image should be saved
262
+ * @returns Promise that resolves when the image is saved
263
+ *
264
+ * @example
265
+ * ```typescript
266
+ * const pictures = await readPictures("song.mp3");
267
+ * for (const picture of pictures) {
268
+ * await savePictureToFile(picture, `export-${picture.type}.jpg`);
269
+ * }
270
+ * ```
271
+ */
272
+ export async function savePictureToFile(picture, imagePath) {
273
+ await writeFileData(imagePath, picture.data);
274
+ }
275
+ /**
276
+ * Copy cover art from one audio file to another
277
+ *
278
+ * @param sourcePath - Path to source audio file
279
+ * @param targetPath - Path to target audio file (modified in place)
280
+ * @param options - Copy options
281
+ * @returns Promise that resolves when cover art is copied
282
+ * @throws Error if source has no cover art
283
+ *
284
+ * @example
285
+ * ```typescript
286
+ * // Copy cover art from one file to another
287
+ * await copyCoverArt("album/track01.mp3", "album/track02.mp3");
288
+ *
289
+ * // Copy all pictures
290
+ * await copyCoverArt("source.mp3", "target.mp3", { copyAll: true });
291
+ * ```
292
+ */
293
+ export async function copyCoverArt(sourcePath, targetPath, options = {}) {
294
+ if (options.copyAll) {
295
+ // Copy all pictures
296
+ const pictures = await readPictures(sourcePath);
297
+ if (pictures.length === 0) {
298
+ throw new Error(`No pictures found in: ${sourcePath}`);
299
+ }
300
+ const modifiedBuffer = await applyPictures(targetPath, pictures);
301
+ await writeFileData(targetPath, modifiedBuffer);
302
+ }
303
+ else {
304
+ // Copy just the primary cover art
305
+ const coverData = await getCoverArt(sourcePath);
306
+ if (!coverData) {
307
+ throw new Error(`No cover art found in: ${sourcePath}`);
308
+ }
309
+ // Find the MIME type from the source
310
+ const pictures = await readPictures(sourcePath);
311
+ const coverPicture = pictures.find((p) => p.type === PictureType.FrontCover) || pictures[0];
312
+ const modifiedBuffer = await setCoverArt(targetPath, coverData, coverPicture.mimeType);
313
+ await writeFileData(targetPath, modifiedBuffer);
314
+ }
315
+ }
316
+ /**
317
+ * Check if cover art files exist for an audio file
318
+ *
319
+ * Looks for common cover art filenames in the same directory as the audio file.
320
+ *
321
+ * @param audioPath - Path to the audio file
322
+ * @returns Object with found cover art paths
323
+ *
324
+ * @example
325
+ * ```typescript
326
+ * const covers = await findCoverArtFiles("music/album/track01.mp3");
327
+ * if (covers.front) {
328
+ * await importCoverArt("music/album/track01.mp3", covers.front);
329
+ * }
330
+ * ```
331
+ */
332
+ export async function findCoverArtFiles(audioPath) {
333
+ const dir = audioPath.substring(0, audioPath.lastIndexOf("/") + 1);
334
+ const commonNames = [
335
+ "cover",
336
+ "front",
337
+ "folder",
338
+ "album",
339
+ "artwork",
340
+ "Cover",
341
+ "Front",
342
+ "Folder",
343
+ "Album",
344
+ "Artwork",
345
+ ];
346
+ const extensions = ["jpg", "jpeg", "png", "gif", "webp"];
347
+ const found = {};
348
+ // Check for common front cover names
349
+ for (const name of commonNames) {
350
+ for (const ext of extensions) {
351
+ const path = `${dir}${name}.${ext}`;
352
+ try {
353
+ // Try to read a single byte to check if file exists
354
+ const data = await readFileData(path);
355
+ if (data.length > 0) {
356
+ if (!found.front && ["cover", "front", "Cover", "Front"].includes(name)) {
357
+ found.front = path;
358
+ }
359
+ else if (!found.folder && ["folder", "Folder"].includes(name)) {
360
+ found.folder = path;
361
+ }
362
+ else {
363
+ found[name.toLowerCase()] = path;
364
+ }
365
+ break; // Found this name, skip other extensions
366
+ }
367
+ }
368
+ catch {
369
+ // File doesn't exist, continue
370
+ }
371
+ }
372
+ }
373
+ // Check for back cover
374
+ const backNames = ["back", "Back", "back-cover", "Back-Cover"];
375
+ for (const name of backNames) {
376
+ for (const ext of extensions) {
377
+ const path = `${dir}${name}.${ext}`;
378
+ try {
379
+ const data = await readFileData(path);
380
+ if (data.length > 0) {
381
+ found.back = path;
382
+ break;
383
+ }
384
+ }
385
+ catch {
386
+ // File doesn't exist, continue
387
+ }
388
+ }
389
+ if (found.back)
390
+ break;
391
+ }
392
+ return found;
393
+ }
394
+ //# sourceMappingURL=file-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/file-utils.ts"],"names":[],"mappings":"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"}
package/dist/src/mod.d.ts CHANGED
@@ -2,8 +2,8 @@
2
2
  * @fileoverview TagLib WebAssembly TypeScript bindings
3
3
  * Universal audio metadata handling for Deno, Node.js, and browsers
4
4
  */
5
- export { AudioFileImpl, createTagLib, TagLib } from "./taglib.ts";
6
- export type { AudioFile, Tag } from "./taglib.ts";
7
- export type { AudioProperties, FileType, PropertyMap, Tag as BasicTag, } from "./types.ts";
8
- export type { TagLibModule } from "./wasm.ts";
5
+ export { AudioFileImpl, createTagLib, TagLib } from "./taglib";
6
+ export type { AudioFile, Tag } from "./taglib";
7
+ export type { AudioProperties, FileType, PropertyMap, Tag as BasicTag, } from "./types";
8
+ export type { TagLibModule } from "./wasm";
9
9
  //# sourceMappingURL=mod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/mod.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAClE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlD,YAAY,EACV,eAAe,EACf,QAAQ,EACR,WAAW,EACX,GAAG,IAAI,QAAQ,GAChB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/mod.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC/D,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/C,YAAY,EACV,eAAe,EACf,QAAQ,EACR,WAAW,EACX,GAAG,IAAI,QAAQ,GAChB,MAAM,SAAS,CAAC;AAGjB,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @fileoverview TagLib WebAssembly TypeScript bindings
3
+ * Universal audio metadata handling for Deno, Node.js, and browsers
4
+ */
5
+ // Export from taglib.ts
6
+ export { AudioFileImpl, createTagLib, TagLib } from "./taglib.js";
7
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/mod.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAwB;AACxB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}