taglib-wasm 0.3.11 → 0.3.12
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/README.md +5 -3
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -22
- package/dist/index.ts +25 -23
- package/dist/src/errors.d.ts +4 -4
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.ts +65 -48
- package/dist/src/file-utils.d.ts.map +1 -1
- package/dist/src/file-utils.ts +98 -82
- package/dist/src/file.js +15 -10
- package/dist/src/global.d.ts +3 -1
- package/dist/src/simple.d.ts +2 -2
- package/dist/src/simple.d.ts.map +1 -1
- package/dist/src/simple.ts +32 -26
- package/dist/src/taglib.d.ts +1 -1
- package/dist/src/taglib.d.ts.map +1 -1
- package/dist/src/taglib.ts +27 -25
- package/dist/src/utils/file.d.ts.map +1 -1
- package/dist/src/utils/file.ts +24 -20
- package/dist/src/utils/write.d.ts.map +1 -1
- package/dist/src/utils/write.ts +16 -11
- package/dist/src/wasm.d.ts +1 -1
- package/dist/src/wasm.ts +1 -1
- package/dist/src/web-utils.d.ts +2 -2
- package/dist/src/web-utils.ts +29 -29
- package/dist/src/workers.d.ts.map +1 -1
- package/dist/src/workers.ts +4 -8
- package/dist/src/write.js +4 -4
- package/dist/taglib-wrapper.js +2528 -8
- package/index.ts +25 -23
- package/package.json +4 -3
- package/src/errors.ts +65 -48
- package/src/file-utils.ts +98 -82
- package/src/global.d.ts +3 -1
- package/src/simple.ts +32 -26
- package/src/taglib.ts +27 -25
- package/src/utils/file.ts +24 -20
- package/src/utils/write.ts +16 -11
- package/src/wasm.ts +1 -1
- package/src/web-utils.ts +29 -29
- package/src/workers.ts +4 -8
package/README.md
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
# TagLib-Wasm
|
|
2
2
|
|
|
3
|
+
[](https://github.com/CharlesWiltgen/taglib-wasm/actions/workflows/test.yml)
|
|
3
4
|
[](https://www.npmjs.com/package/taglib-wasm)
|
|
4
5
|
[](https://www.npmjs.com/package/taglib-wasm)
|
|
5
|
-
[](https://github.com/CharlesWiltgen/taglib-wasm/blob/main/LICENSE)
|
|
7
|
+
<br>[](https://www.typescriptlang.org/)
|
|
7
8
|
[](https://emscripten.org/)
|
|
9
|
+
[](https://taglib.org/)
|
|
8
10
|
<br>[](https://deno.land/)
|
|
9
11
|
[](https://nodejs.org/)
|
|
10
12
|
[](https://bun.sh/)
|
|
11
13
|
[](https://workers.cloudflare.com/)
|
|
12
14
|
[](https://www.electronjs.org/)
|
|
13
|
-
[]()
|
|
14
16
|
|
|
15
17
|
**TagLib-Wasm** is the universal tagging library for TypeScript platforms: Deno,
|
|
16
18
|
Node.js, Bun, Cloudflare Workers, Electron, and browsers. It’s the answer to the
|
package/dist/index.d.ts
CHANGED
|
@@ -63,8 +63,7 @@ export { EnvironmentError, FileOperationError, InvalidFormatError, isEnvironment
|
|
|
63
63
|
* @see {@link getCoverArt} - Get primary cover art data
|
|
64
64
|
* @see {@link setCoverArt} - Set primary cover art
|
|
65
65
|
*/
|
|
66
|
-
export {
|
|
67
|
-
readPictures, applyPictures, addPicture, clearPictures, getCoverArt, setCoverArt, findPictureByType, replacePictureByType, getPictureMetadata, isValidAudioFile, getFormat, clearTags } from "./src/simple.ts";
|
|
66
|
+
export { addPicture, applyPictures, applyTags, clearPictures, clearTags, findPictureByType, getCoverArt, getFormat, getPictureMetadata, isValidAudioFile, readPictures, readProperties, readTags, replacePictureByType, setCoverArt, updateTags, writeTags, } from "./src/simple.ts";
|
|
68
67
|
/**
|
|
69
68
|
* Constants and utilities for tag name validation.
|
|
70
69
|
* @see {@link Tags} - Standard tag name constants
|
|
@@ -79,14 +78,14 @@ export { FormatMappings, getAllTagNames, isValidTagName, Tags, } from "./src/con
|
|
|
79
78
|
* @see {@link importCoverArt} - Import cover art from file
|
|
80
79
|
* @see {@link copyCoverArt} - Copy cover art between files
|
|
81
80
|
*/
|
|
82
|
-
export { exportCoverArt, exportPictureByType,
|
|
81
|
+
export { copyCoverArt, exportAllPictures, exportCoverArt, exportPictureByType, findCoverArtFiles, importCoverArt, importPictureWithType, loadPictureFromFile, savePictureToFile, } from "./src/file-utils.ts";
|
|
83
82
|
/**
|
|
84
83
|
* Web browser utilities for cover art operations.
|
|
85
84
|
* @see {@link pictureToDataURL} - Convert picture to data URL
|
|
86
85
|
* @see {@link setCoverArtFromCanvas} - Set cover art from HTML canvas
|
|
87
86
|
* @see {@link displayPicture} - Display picture in HTML img element
|
|
88
87
|
*/
|
|
89
|
-
export {
|
|
88
|
+
export { canvasToPicture, createPictureDownloadURL, createPictureGallery, dataURLToPicture, displayPicture, imageFileToPicture, pictureToDataURL, setCoverArtFromCanvas, } from "./src/web-utils.ts";
|
|
90
89
|
/**
|
|
91
90
|
* Type exports for TypeScript users.
|
|
92
91
|
* These types define the structure of metadata, audio properties,
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH;;;;;GAKG;AACH,OAAO,EACL,aAAa,IAAI,SAAS,EAC1B,YAAY,EACZ,MAAM,GACP,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;GAUG;AACH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,aAAa,EACb,wBAAwB,EACxB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;GAWG;AACH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH;;;;;GAKG;AACH,OAAO,EACL,aAAa,IAAI,SAAS,EAC1B,YAAY,EACZ,MAAM,GACP,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;GAUG;AACH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,aAAa,EACb,wBAAwB,EACxB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;GAWG;AACH,OAAO,EACL,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,oBAAoB,EACpB,WAAW,EACX,UAAU,EACV,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB;;;;;;GAMG;AACH,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,IAAI,GACL,MAAM,oBAAoB,CAAC;AAC5B;;;;;GAKG;AACH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B;;;;;GAKG;AACH,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;GASG;AACH,YAAY,EACV,WAAW,EACX,eAAe,EACf,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,WAAW,EACX,GAAG,EACH,YAAY,EACZ,OAAO,GACR,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC,CAO9D"}
|
package/dist/index.js
CHANGED
|
@@ -23,23 +23,23 @@ import {
|
|
|
23
23
|
UnsupportedFormatError
|
|
24
24
|
} from "./src/errors.ts";
|
|
25
25
|
import {
|
|
26
|
-
readProperties,
|
|
27
|
-
readTags,
|
|
28
|
-
applyTags,
|
|
29
|
-
updateTags,
|
|
30
|
-
writeTags,
|
|
31
|
-
readPictures,
|
|
32
|
-
applyPictures,
|
|
33
26
|
addPicture,
|
|
27
|
+
applyPictures,
|
|
28
|
+
applyTags,
|
|
34
29
|
clearPictures,
|
|
35
|
-
|
|
36
|
-
setCoverArt,
|
|
30
|
+
clearTags,
|
|
37
31
|
findPictureByType,
|
|
38
|
-
|
|
32
|
+
getCoverArt,
|
|
33
|
+
getFormat,
|
|
39
34
|
getPictureMetadata,
|
|
40
35
|
isValidAudioFile,
|
|
41
|
-
|
|
42
|
-
|
|
36
|
+
readPictures,
|
|
37
|
+
readProperties,
|
|
38
|
+
readTags,
|
|
39
|
+
replacePictureByType,
|
|
40
|
+
setCoverArt,
|
|
41
|
+
updateTags,
|
|
42
|
+
writeTags
|
|
43
43
|
} from "./src/simple.ts";
|
|
44
44
|
import {
|
|
45
45
|
FormatMappings,
|
|
@@ -48,25 +48,25 @@ import {
|
|
|
48
48
|
Tags
|
|
49
49
|
} from "./src/constants.ts";
|
|
50
50
|
import {
|
|
51
|
+
copyCoverArt,
|
|
52
|
+
exportAllPictures,
|
|
51
53
|
exportCoverArt,
|
|
52
54
|
exportPictureByType,
|
|
53
|
-
|
|
55
|
+
findCoverArtFiles,
|
|
54
56
|
importCoverArt,
|
|
55
57
|
importPictureWithType,
|
|
56
58
|
loadPictureFromFile,
|
|
57
|
-
savePictureToFile
|
|
58
|
-
copyCoverArt,
|
|
59
|
-
findCoverArtFiles
|
|
59
|
+
savePictureToFile
|
|
60
60
|
} from "./src/file-utils.ts";
|
|
61
61
|
import {
|
|
62
|
-
pictureToDataURL,
|
|
63
|
-
dataURLToPicture,
|
|
64
|
-
setCoverArtFromCanvas,
|
|
65
62
|
canvasToPicture,
|
|
66
|
-
imageFileToPicture,
|
|
67
|
-
displayPicture,
|
|
68
63
|
createPictureDownloadURL,
|
|
69
|
-
createPictureGallery
|
|
64
|
+
createPictureGallery,
|
|
65
|
+
dataURLToPicture,
|
|
66
|
+
displayPicture,
|
|
67
|
+
imageFileToPicture,
|
|
68
|
+
pictureToDataURL,
|
|
69
|
+
setCoverArtFromCanvas
|
|
70
70
|
} from "./src/web-utils.ts";
|
|
71
71
|
import { PictureType } from "./src/types.ts";
|
|
72
72
|
async function loadTagLibModule() {
|
package/dist/index.ts
CHANGED
|
@@ -87,24 +87,24 @@ export {
|
|
|
87
87
|
* @see {@link getCoverArt} - Get primary cover art data
|
|
88
88
|
* @see {@link setCoverArt} - Set primary cover art
|
|
89
89
|
*/
|
|
90
|
-
export {
|
|
91
|
-
readProperties,
|
|
92
|
-
readTags,
|
|
93
|
-
applyTags,
|
|
94
|
-
updateTags,
|
|
95
|
-
writeTags, // Deprecated but exported for backward compatibility
|
|
96
|
-
readPictures,
|
|
97
|
-
applyPictures,
|
|
90
|
+
export {
|
|
98
91
|
addPicture,
|
|
92
|
+
applyPictures,
|
|
93
|
+
applyTags,
|
|
99
94
|
clearPictures,
|
|
100
|
-
|
|
101
|
-
setCoverArt,
|
|
95
|
+
clearTags,
|
|
102
96
|
findPictureByType,
|
|
103
|
-
|
|
97
|
+
getCoverArt,
|
|
98
|
+
getFormat,
|
|
104
99
|
getPictureMetadata,
|
|
105
100
|
isValidAudioFile,
|
|
106
|
-
|
|
107
|
-
|
|
101
|
+
readPictures,
|
|
102
|
+
readProperties,
|
|
103
|
+
readTags,
|
|
104
|
+
replacePictureByType,
|
|
105
|
+
setCoverArt,
|
|
106
|
+
updateTags,
|
|
107
|
+
writeTags, // Deprecated but exported for backward compatibility
|
|
108
108
|
} from "./src/simple.ts";
|
|
109
109
|
|
|
110
110
|
/**
|
|
@@ -127,15 +127,15 @@ export {
|
|
|
127
127
|
* @see {@link copyCoverArt} - Copy cover art between files
|
|
128
128
|
*/
|
|
129
129
|
export {
|
|
130
|
+
copyCoverArt,
|
|
131
|
+
exportAllPictures,
|
|
130
132
|
exportCoverArt,
|
|
131
133
|
exportPictureByType,
|
|
132
|
-
|
|
134
|
+
findCoverArtFiles,
|
|
133
135
|
importCoverArt,
|
|
134
136
|
importPictureWithType,
|
|
135
137
|
loadPictureFromFile,
|
|
136
138
|
savePictureToFile,
|
|
137
|
-
copyCoverArt,
|
|
138
|
-
findCoverArtFiles
|
|
139
139
|
} from "./src/file-utils.ts";
|
|
140
140
|
|
|
141
141
|
/**
|
|
@@ -145,14 +145,14 @@ export {
|
|
|
145
145
|
* @see {@link displayPicture} - Display picture in HTML img element
|
|
146
146
|
*/
|
|
147
147
|
export {
|
|
148
|
-
pictureToDataURL,
|
|
149
|
-
dataURLToPicture,
|
|
150
|
-
setCoverArtFromCanvas,
|
|
151
148
|
canvasToPicture,
|
|
152
|
-
imageFileToPicture,
|
|
153
|
-
displayPicture,
|
|
154
149
|
createPictureDownloadURL,
|
|
155
|
-
createPictureGallery
|
|
150
|
+
createPictureGallery,
|
|
151
|
+
dataURLToPicture,
|
|
152
|
+
displayPicture,
|
|
153
|
+
imageFileToPicture,
|
|
154
|
+
pictureToDataURL,
|
|
155
|
+
setCoverArtFromCanvas,
|
|
156
156
|
} from "./src/web-utils.ts";
|
|
157
157
|
|
|
158
158
|
/**
|
|
@@ -214,7 +214,9 @@ import type { TagLibModule } from "./src/wasm.ts";
|
|
|
214
214
|
*/
|
|
215
215
|
export async function loadTagLibModule(): Promise<TagLibModule> {
|
|
216
216
|
// Now that we're using ES6 modules, we can use dynamic import directly
|
|
217
|
-
const { default: createTagLibModule } = await import(
|
|
217
|
+
const { default: createTagLibModule } = await import(
|
|
218
|
+
"./build/taglib-wrapper.js"
|
|
219
|
+
);
|
|
218
220
|
const module = await createTagLibModule();
|
|
219
221
|
return module as TagLibModule;
|
|
220
222
|
}
|
package/dist/src/errors.d.ts
CHANGED
|
@@ -50,17 +50,17 @@ export declare class UnsupportedFormatError extends TagLibError {
|
|
|
50
50
|
* Error thrown during file operations (read, write, save)
|
|
51
51
|
*/
|
|
52
52
|
export declare class FileOperationError extends TagLibError {
|
|
53
|
-
readonly operation:
|
|
53
|
+
readonly operation: "read" | "write" | "save";
|
|
54
54
|
readonly path?: string | undefined;
|
|
55
|
-
constructor(operation:
|
|
55
|
+
constructor(operation: "read" | "write" | "save", message: string, path?: string | undefined, context?: Record<string, unknown>);
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
58
58
|
* Error thrown when metadata operations fail
|
|
59
59
|
*/
|
|
60
60
|
export declare class MetadataError extends TagLibError {
|
|
61
|
-
readonly operation:
|
|
61
|
+
readonly operation: "read" | "write";
|
|
62
62
|
readonly field?: string | undefined;
|
|
63
|
-
constructor(operation:
|
|
63
|
+
constructor(operation: "read" | "write", message: string, field?: string | undefined, context?: Record<string, unknown>);
|
|
64
64
|
}
|
|
65
65
|
/**
|
|
66
66
|
* Error thrown when Wasm memory operations fail
|
package/dist/src/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/src/errors.ts
CHANGED
|
@@ -5,19 +5,26 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* List of audio formats supported by taglib-wasm
|
|
7
7
|
*/
|
|
8
|
-
export const SUPPORTED_FORMATS = [
|
|
8
|
+
export const SUPPORTED_FORMATS = [
|
|
9
|
+
"MP3",
|
|
10
|
+
"MP4",
|
|
11
|
+
"M4A",
|
|
12
|
+
"FLAC",
|
|
13
|
+
"OGG",
|
|
14
|
+
"WAV",
|
|
15
|
+
] as const;
|
|
9
16
|
|
|
10
17
|
/**
|
|
11
18
|
* Error codes for programmatic error handling
|
|
12
19
|
*/
|
|
13
20
|
export enum TagLibErrorCode {
|
|
14
|
-
INITIALIZATION_FAILED =
|
|
15
|
-
INVALID_FORMAT =
|
|
16
|
-
UNSUPPORTED_FORMAT =
|
|
17
|
-
FILE_OPERATION_FAILED =
|
|
18
|
-
METADATA_ERROR =
|
|
19
|
-
MEMORY_ERROR =
|
|
20
|
-
ENVIRONMENT_ERROR =
|
|
21
|
+
INITIALIZATION_FAILED = "INITIALIZATION_FAILED",
|
|
22
|
+
INVALID_FORMAT = "INVALID_FORMAT",
|
|
23
|
+
UNSUPPORTED_FORMAT = "UNSUPPORTED_FORMAT",
|
|
24
|
+
FILE_OPERATION_FAILED = "FILE_OPERATION_FAILED",
|
|
25
|
+
METADATA_ERROR = "METADATA_ERROR",
|
|
26
|
+
MEMORY_ERROR = "MEMORY_ERROR",
|
|
27
|
+
ENVIRONMENT_ERROR = "ENVIRONMENT_ERROR",
|
|
21
28
|
}
|
|
22
29
|
|
|
23
30
|
/**
|
|
@@ -27,10 +34,10 @@ export class TagLibError extends Error {
|
|
|
27
34
|
constructor(
|
|
28
35
|
message: string,
|
|
29
36
|
public readonly code: TagLibErrorCode,
|
|
30
|
-
public readonly context?: Record<string, unknown
|
|
37
|
+
public readonly context?: Record<string, unknown>,
|
|
31
38
|
) {
|
|
32
39
|
super(message);
|
|
33
|
-
this.name =
|
|
40
|
+
this.name = "TagLibError";
|
|
34
41
|
Object.setPrototypeOf(this, TagLibError.prototype);
|
|
35
42
|
}
|
|
36
43
|
}
|
|
@@ -41,11 +48,11 @@ export class TagLibError extends Error {
|
|
|
41
48
|
export class TagLibInitializationError extends TagLibError {
|
|
42
49
|
constructor(message: string, context?: Record<string, unknown>) {
|
|
43
50
|
super(
|
|
44
|
-
createErrorMessage(
|
|
51
|
+
createErrorMessage("Failed to initialize TagLib Wasm module", message),
|
|
45
52
|
TagLibErrorCode.INITIALIZATION_FAILED,
|
|
46
|
-
context
|
|
53
|
+
context,
|
|
47
54
|
);
|
|
48
|
-
this.name =
|
|
55
|
+
this.name = "TagLibInitializationError";
|
|
49
56
|
Object.setPrototypeOf(this, TagLibInitializationError.prototype);
|
|
50
57
|
}
|
|
51
58
|
}
|
|
@@ -57,23 +64,25 @@ export class InvalidFormatError extends TagLibError {
|
|
|
57
64
|
constructor(
|
|
58
65
|
message: string,
|
|
59
66
|
public readonly bufferSize?: number,
|
|
60
|
-
context?: Record<string, unknown
|
|
67
|
+
context?: Record<string, unknown>,
|
|
61
68
|
) {
|
|
62
69
|
const details = [`Invalid audio file format: ${message}`];
|
|
63
|
-
|
|
70
|
+
|
|
64
71
|
if (bufferSize !== undefined) {
|
|
65
72
|
details.push(`Buffer size: ${formatFileSize(bufferSize)}`);
|
|
66
73
|
if (bufferSize < 1024) {
|
|
67
|
-
details.push(
|
|
74
|
+
details.push(
|
|
75
|
+
"Audio files must be at least 1KB to contain valid headers.",
|
|
76
|
+
);
|
|
68
77
|
}
|
|
69
78
|
}
|
|
70
|
-
|
|
79
|
+
|
|
71
80
|
super(
|
|
72
|
-
details.join(
|
|
81
|
+
details.join(". "),
|
|
73
82
|
TagLibErrorCode.INVALID_FORMAT,
|
|
74
|
-
{ ...context, bufferSize }
|
|
83
|
+
{ ...context, bufferSize },
|
|
75
84
|
);
|
|
76
|
-
this.name =
|
|
85
|
+
this.name = "InvalidFormatError";
|
|
77
86
|
Object.setPrototypeOf(this, InvalidFormatError.prototype);
|
|
78
87
|
}
|
|
79
88
|
}
|
|
@@ -85,14 +94,16 @@ export class UnsupportedFormatError extends TagLibError {
|
|
|
85
94
|
constructor(
|
|
86
95
|
public readonly format: string,
|
|
87
96
|
public readonly supportedFormats: readonly string[] = SUPPORTED_FORMATS,
|
|
88
|
-
context?: Record<string, unknown
|
|
97
|
+
context?: Record<string, unknown>,
|
|
89
98
|
) {
|
|
90
99
|
super(
|
|
91
|
-
`Unsupported audio format: ${format}. Supported formats: ${
|
|
100
|
+
`Unsupported audio format: ${format}. Supported formats: ${
|
|
101
|
+
supportedFormats.join(", ")
|
|
102
|
+
}`,
|
|
92
103
|
TagLibErrorCode.UNSUPPORTED_FORMAT,
|
|
93
|
-
{ ...context, format, supportedFormats }
|
|
104
|
+
{ ...context, format, supportedFormats },
|
|
94
105
|
);
|
|
95
|
-
this.name =
|
|
106
|
+
this.name = "UnsupportedFormatError";
|
|
96
107
|
Object.setPrototypeOf(this, UnsupportedFormatError.prototype);
|
|
97
108
|
}
|
|
98
109
|
}
|
|
@@ -102,23 +113,23 @@ export class UnsupportedFormatError extends TagLibError {
|
|
|
102
113
|
*/
|
|
103
114
|
export class FileOperationError extends TagLibError {
|
|
104
115
|
constructor(
|
|
105
|
-
public readonly operation:
|
|
116
|
+
public readonly operation: "read" | "write" | "save",
|
|
106
117
|
message: string,
|
|
107
118
|
public readonly path?: string,
|
|
108
|
-
context?: Record<string, unknown
|
|
119
|
+
context?: Record<string, unknown>,
|
|
109
120
|
) {
|
|
110
121
|
const details = [`Failed to ${operation} file`];
|
|
111
122
|
if (path) {
|
|
112
123
|
details.push(`Path: ${path}`);
|
|
113
124
|
}
|
|
114
125
|
details.push(message);
|
|
115
|
-
|
|
126
|
+
|
|
116
127
|
super(
|
|
117
|
-
details.join(
|
|
128
|
+
details.join(". "),
|
|
118
129
|
TagLibErrorCode.FILE_OPERATION_FAILED,
|
|
119
|
-
{ ...context, operation, path }
|
|
130
|
+
{ ...context, operation, path },
|
|
120
131
|
);
|
|
121
|
-
this.name =
|
|
132
|
+
this.name = "FileOperationError";
|
|
122
133
|
Object.setPrototypeOf(this, FileOperationError.prototype);
|
|
123
134
|
}
|
|
124
135
|
}
|
|
@@ -128,23 +139,23 @@ export class FileOperationError extends TagLibError {
|
|
|
128
139
|
*/
|
|
129
140
|
export class MetadataError extends TagLibError {
|
|
130
141
|
constructor(
|
|
131
|
-
public readonly operation:
|
|
142
|
+
public readonly operation: "read" | "write",
|
|
132
143
|
message: string,
|
|
133
144
|
public readonly field?: string,
|
|
134
|
-
context?: Record<string, unknown
|
|
145
|
+
context?: Record<string, unknown>,
|
|
135
146
|
) {
|
|
136
147
|
const details = [`Failed to ${operation} metadata`];
|
|
137
148
|
if (field) {
|
|
138
149
|
details.push(`Field: ${field}`);
|
|
139
150
|
}
|
|
140
151
|
details.push(message);
|
|
141
|
-
|
|
152
|
+
|
|
142
153
|
super(
|
|
143
|
-
details.join(
|
|
154
|
+
details.join(". "),
|
|
144
155
|
TagLibErrorCode.METADATA_ERROR,
|
|
145
|
-
{ ...context, operation, field }
|
|
156
|
+
{ ...context, operation, field },
|
|
146
157
|
);
|
|
147
|
-
this.name =
|
|
158
|
+
this.name = "MetadataError";
|
|
148
159
|
Object.setPrototypeOf(this, MetadataError.prototype);
|
|
149
160
|
}
|
|
150
161
|
}
|
|
@@ -155,11 +166,11 @@ export class MetadataError extends TagLibError {
|
|
|
155
166
|
export class MemoryError extends TagLibError {
|
|
156
167
|
constructor(message: string, context?: Record<string, unknown>) {
|
|
157
168
|
super(
|
|
158
|
-
createErrorMessage(
|
|
169
|
+
createErrorMessage("Memory allocation failed", message),
|
|
159
170
|
TagLibErrorCode.MEMORY_ERROR,
|
|
160
|
-
context
|
|
171
|
+
context,
|
|
161
172
|
);
|
|
162
|
-
this.name =
|
|
173
|
+
this.name = "MemoryError";
|
|
163
174
|
Object.setPrototypeOf(this, MemoryError.prototype);
|
|
164
175
|
}
|
|
165
176
|
}
|
|
@@ -172,19 +183,19 @@ export class EnvironmentError extends TagLibError {
|
|
|
172
183
|
public readonly environment: string,
|
|
173
184
|
message: string,
|
|
174
185
|
public readonly requiredFeature?: string,
|
|
175
|
-
context?: Record<string, unknown
|
|
186
|
+
context?: Record<string, unknown>,
|
|
176
187
|
) {
|
|
177
188
|
const details = [`Environment '${environment}' ${message}`];
|
|
178
189
|
if (requiredFeature) {
|
|
179
190
|
details.push(`Required feature: ${requiredFeature}`);
|
|
180
191
|
}
|
|
181
|
-
|
|
192
|
+
|
|
182
193
|
super(
|
|
183
|
-
details.join(
|
|
194
|
+
details.join(". "),
|
|
184
195
|
TagLibErrorCode.ENVIRONMENT_ERROR,
|
|
185
|
-
{ ...context, environment, requiredFeature }
|
|
196
|
+
{ ...context, environment, requiredFeature },
|
|
186
197
|
);
|
|
187
|
-
this.name =
|
|
198
|
+
this.name = "EnvironmentError";
|
|
188
199
|
Object.setPrototypeOf(this, EnvironmentError.prototype);
|
|
189
200
|
}
|
|
190
201
|
}
|
|
@@ -212,15 +223,21 @@ export function isTagLibError(error: unknown): error is TagLibError {
|
|
|
212
223
|
return error instanceof TagLibError;
|
|
213
224
|
}
|
|
214
225
|
|
|
215
|
-
export function isInvalidFormatError(
|
|
226
|
+
export function isInvalidFormatError(
|
|
227
|
+
error: unknown,
|
|
228
|
+
): error is InvalidFormatError {
|
|
216
229
|
return error instanceof InvalidFormatError;
|
|
217
230
|
}
|
|
218
231
|
|
|
219
|
-
export function isUnsupportedFormatError(
|
|
232
|
+
export function isUnsupportedFormatError(
|
|
233
|
+
error: unknown,
|
|
234
|
+
): error is UnsupportedFormatError {
|
|
220
235
|
return error instanceof UnsupportedFormatError;
|
|
221
236
|
}
|
|
222
237
|
|
|
223
|
-
export function isFileOperationError(
|
|
238
|
+
export function isFileOperationError(
|
|
239
|
+
error: unknown,
|
|
240
|
+
): error is FileOperationError {
|
|
224
241
|
return error instanceof FileOperationError;
|
|
225
242
|
}
|
|
226
243
|
|
|
@@ -234,4 +251,4 @@ export function isMemoryError(error: unknown): error is MemoryError {
|
|
|
234
251
|
|
|
235
252
|
export function isEnvironmentError(error: unknown): error is EnvironmentError {
|
|
236
253
|
return error instanceof EnvironmentError;
|
|
237
|
-
}
|
|
254
|
+
}
|
|
@@ -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,
|
|
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"}
|