taglib-wasm 1.7.0 → 1.7.2
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/dist/index.browser.js +1 -1
- package/dist/simple.browser.js +1 -1
- package/dist/src/folder-api/group-albums.d.ts +26 -0
- package/dist/src/folder-api/group-albums.d.ts.map +1 -1
- package/dist/src/folder-api/group-albums.js +61 -22
- package/dist/src/folder-api/index.d.ts +1 -1
- package/dist/src/folder-api/index.d.ts.map +1 -1
- package/dist/src/folder-api/index.js +2 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +1 -1
package/dist/index.browser.js
CHANGED
package/dist/simple.browser.js
CHANGED
|
@@ -92,5 +92,31 @@ export interface GroupAlbumsOptions {
|
|
|
92
92
|
* scanned root). scanForAlbums always passes the folder path it scanned. */
|
|
93
93
|
scanRoot?: string;
|
|
94
94
|
}
|
|
95
|
+
/** The standalone disc-folder recognizer result. */
|
|
96
|
+
export interface DiscFolderInfo {
|
|
97
|
+
/** Which grammar form matched. */
|
|
98
|
+
kind: "exact" | "embedded" | "volume" | "bonus" | "bare";
|
|
99
|
+
/** True when corroboration is required (title-word markers like "Tape 4",
|
|
100
|
+
* side letters like "CD D", bonus, bare). */
|
|
101
|
+
gated: boolean;
|
|
102
|
+
/** Disc number; undefined for side letters, bonus, and bare letters. */
|
|
103
|
+
number: number | undefined;
|
|
104
|
+
/** "of N" total from "CD 1 of 2". */
|
|
105
|
+
total: number | undefined;
|
|
106
|
+
/** Title text before an embedded marker ("Album (Disc 1)" -> "Album"). */
|
|
107
|
+
title: string | undefined;
|
|
108
|
+
/** Trailing text after the number ("Bonus Tracks" from "Disc 2 (Bonus Tracks)"). */
|
|
109
|
+
discTitle: string | undefined;
|
|
110
|
+
/** Base confidence tier; sibling corroboration may upgrade embedded to
|
|
111
|
+
* "high" inside groupAlbums. Gated names stay "low" even corroborated. */
|
|
112
|
+
confidence: DiscConfidence;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Recognize a directory name as a disc folder. Standalone — it only
|
|
116
|
+
* classifies the name; it does not resolve the folder to its parent (use
|
|
117
|
+
* the album result's per-file `albumDir` for that). Returns undefined for
|
|
118
|
+
* non-disc names. Plain "Bonus" and "Extras" are never discs by name.
|
|
119
|
+
*/
|
|
120
|
+
export declare function discFolderInfo(name: string): DiscFolderInfo | undefined;
|
|
95
121
|
export declare function groupAlbums(result: FolderScanResult, options?: GroupAlbumsOptions): AlbumGroupingResult;
|
|
96
122
|
//# sourceMappingURL=group-albums.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group-albums.d.ts","sourceRoot":"","sources":["../../../src/folder-api/group-albums.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAOtE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEvD,2DAA2D;AAC3D,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD;kEAC8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB;qDACiD;IACjD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,4FAA4F;IAC5F,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,+EAA+E;IAC/E,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,mFAAmF;IACnF,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,4FAA4F;IAC5F,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,4EAA4E;IAC5E,UAAU,EAAE,cAAc,CAAC;IAC3B,2EAA2E;IAC3E,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,8EAA8E;IAC9E,GAAG,EAAE,aAAa,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,0CAA0C;IAC1C,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B;;sEAEkE;IAClE,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC;sEACkE;IAClE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,6EAA6E;IAC7E,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,uEAAuE;IACvE,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB;yDACqD;IACrD,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,mFAAmF;IACnF,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,wEAAwE;IACxE,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,cAAc,CAAC;IACrC,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;gFAI4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"group-albums.d.ts","sourceRoot":"","sources":["../../../src/folder-api/group-albums.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import { basename } from "../utils/path.js";
|
|
2
|
+
function discFolderInfo(name) {
|
|
3
|
+
const parse = parseDiscName(name);
|
|
4
|
+
if (!parse) return void 0;
|
|
5
|
+
return {
|
|
6
|
+
kind: parse.kind,
|
|
7
|
+
gated: parse.gated,
|
|
8
|
+
number: parse.number,
|
|
9
|
+
total: parse.total,
|
|
10
|
+
title: parse.title,
|
|
11
|
+
discTitle: parse.discTitle,
|
|
12
|
+
confidence: parse.gated ? "low" : baseConfidence(parse)
|
|
13
|
+
};
|
|
14
|
+
}
|
|
2
15
|
function dirname(path) {
|
|
3
16
|
const i = Math.max(path.lastIndexOf("/"), path.lastIndexOf("\\"));
|
|
4
17
|
return i === -1 ? path : path.slice(0, i);
|
|
5
18
|
}
|
|
6
|
-
const
|
|
19
|
+
const UNCONDITIONAL_MARKERS = [
|
|
7
20
|
"cd",
|
|
8
21
|
"disc",
|
|
9
22
|
"disk",
|
|
@@ -11,13 +24,11 @@ const MARKERS = [
|
|
|
11
24
|
"sacd",
|
|
12
25
|
"blu-ray",
|
|
13
26
|
"bd",
|
|
14
|
-
"vinyl",
|
|
15
|
-
"lp",
|
|
16
|
-
"record",
|
|
17
|
-
"cassette",
|
|
18
|
-
"tape",
|
|
19
27
|
"digital media"
|
|
20
28
|
];
|
|
29
|
+
const GATED_MARKERS = ["tape", "vinyl", "cassette", "lp", "record"];
|
|
30
|
+
const MARKERS = [...UNCONDITIONAL_MARKERS, ...GATED_MARKERS];
|
|
31
|
+
const GATED_MARKER_SET = new Set(GATED_MARKERS);
|
|
21
32
|
const WORD_NUMBERS = {
|
|
22
33
|
one: 1,
|
|
23
34
|
two: 2,
|
|
@@ -60,18 +71,24 @@ function parseNumberToken(token) {
|
|
|
60
71
|
return Number.isFinite(roman) ? roman : void 0;
|
|
61
72
|
}
|
|
62
73
|
const SEP = String.raw`[\s._#-]*`;
|
|
63
|
-
const NUM = String.raw`(?:\d+|[ivxlcdm]+|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve)`;
|
|
74
|
+
const NUM = String.raw`(?:\d+|(?:[ivxlcdm]+|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|[a-z])(?![a-z]))`;
|
|
64
75
|
function parseDiscName(name) {
|
|
65
76
|
const trimmed = name.trim();
|
|
66
77
|
if (/^(?:extras?|bonus)$/i.test(trimmed)) return void 0;
|
|
67
78
|
for (const marker of MARKERS) {
|
|
68
79
|
const left = String.raw`(?:^|[^a-z0-9])`;
|
|
69
80
|
const esc = marker.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
70
|
-
const re = new RegExp(
|
|
81
|
+
const re = new RegExp(
|
|
82
|
+
left + String.raw`(${esc})(?![a-z])${SEP}(${NUM})`,
|
|
83
|
+
"i"
|
|
84
|
+
);
|
|
71
85
|
const m = trimmed.match(re);
|
|
72
86
|
if (!m) continue;
|
|
73
|
-
const
|
|
74
|
-
|
|
87
|
+
const sideLetter = /^[a-z]$/i.test(m[2]);
|
|
88
|
+
const number = sideLetter ? void 0 : parseNumberToken(m[2]);
|
|
89
|
+
if (number === void 0 && !sideLetter) continue;
|
|
90
|
+
if (!sideLetter && /^[ivxlcdm]{2,}$/i.test(m[2]) && (number ?? 0) > 100) continue;
|
|
91
|
+
const isGated = GATED_MARKER_SET.has(marker.toLowerCase()) || sideLetter;
|
|
75
92
|
const markerStart = m.index + m[1].length - marker.length;
|
|
76
93
|
const rawPrefix = trimmed.slice(0, markerStart).trim();
|
|
77
94
|
const title = rawPrefix.replace(/[()[\]]/g, "").replace(/[\s._#-]+$/, "") || void 0;
|
|
@@ -82,10 +99,13 @@ function parseDiscName(name) {
|
|
|
82
99
|
const total = ofMatch ? parseInt(ofMatch[1], 10) : void 0;
|
|
83
100
|
return {
|
|
84
101
|
kind: isExact ? "exact" : "embedded",
|
|
85
|
-
number,
|
|
102
|
+
number: sideLetter ? void 0 : number,
|
|
86
103
|
total,
|
|
87
104
|
title,
|
|
88
|
-
discTitle
|
|
105
|
+
discTitle,
|
|
106
|
+
gated: isGated,
|
|
107
|
+
sideLetter,
|
|
108
|
+
digit: /^\d+$/.test(m[2])
|
|
89
109
|
};
|
|
90
110
|
}
|
|
91
111
|
const volume = trimmed.match(
|
|
@@ -97,7 +117,10 @@ function parseDiscName(name) {
|
|
|
97
117
|
number: parseInt(volume[1], 10),
|
|
98
118
|
total: volume[2] ? parseInt(volume[2], 10) : void 0,
|
|
99
119
|
title: void 0,
|
|
100
|
-
discTitle: void 0
|
|
120
|
+
discTitle: void 0,
|
|
121
|
+
gated: false,
|
|
122
|
+
sideLetter: false,
|
|
123
|
+
digit: true
|
|
101
124
|
};
|
|
102
125
|
}
|
|
103
126
|
if (/^bonus\s+disc$/i.test(trimmed)) {
|
|
@@ -106,7 +129,10 @@ function parseDiscName(name) {
|
|
|
106
129
|
number: void 0,
|
|
107
130
|
total: void 0,
|
|
108
131
|
title: void 0,
|
|
109
|
-
discTitle: void 0
|
|
132
|
+
discTitle: void 0,
|
|
133
|
+
gated: true,
|
|
134
|
+
sideLetter: false,
|
|
135
|
+
digit: false
|
|
110
136
|
};
|
|
111
137
|
}
|
|
112
138
|
if (/^(?:\d+|v\d+|p\d+|[ab])$/i.test(trimmed)) {
|
|
@@ -115,7 +141,10 @@ function parseDiscName(name) {
|
|
|
115
141
|
number: /^\d+$/i.test(trimmed) ? parseInt(trimmed, 10) : void 0,
|
|
116
142
|
total: void 0,
|
|
117
143
|
title: void 0,
|
|
118
|
-
discTitle: void 0
|
|
144
|
+
discTitle: void 0,
|
|
145
|
+
gated: true,
|
|
146
|
+
sideLetter: false,
|
|
147
|
+
digit: false
|
|
119
148
|
};
|
|
120
149
|
}
|
|
121
150
|
return void 0;
|
|
@@ -123,7 +152,7 @@ function parseDiscName(name) {
|
|
|
123
152
|
function baseConfidence(parse) {
|
|
124
153
|
switch (parse.kind) {
|
|
125
154
|
case "exact":
|
|
126
|
-
return
|
|
155
|
+
return parse.digit ? "high" : "low";
|
|
127
156
|
case "embedded":
|
|
128
157
|
return "medium";
|
|
129
158
|
case "volume":
|
|
@@ -134,16 +163,23 @@ function baseConfidence(parse) {
|
|
|
134
163
|
}
|
|
135
164
|
}
|
|
136
165
|
function corroborated(parse, siblings) {
|
|
137
|
-
if (parse.kind === "exact") return true;
|
|
166
|
+
if (!parse.gated && parse.kind === "exact") return true;
|
|
138
167
|
if (siblings.length === 0) return false;
|
|
139
168
|
const siblingParses = siblings.map((s) => parseDiscName(basename(s))).filter((p) => p !== void 0);
|
|
140
|
-
const hasExactSibling = siblingParses.some(
|
|
169
|
+
const hasExactSibling = siblingParses.some(
|
|
170
|
+
(p) => !p.gated && p.kind === "exact"
|
|
171
|
+
);
|
|
141
172
|
const hasNumberedSibling = siblingParses.some(
|
|
142
173
|
(p) => p.number !== void 0
|
|
143
174
|
);
|
|
144
175
|
if (parse.number !== void 0 && hasNumberedSibling) return true;
|
|
145
|
-
if (parse.kind === "embedded" && hasExactSibling) return true;
|
|
146
|
-
if (parse.kind === "volume" && hasNumberedSibling)
|
|
176
|
+
if (!parse.gated && parse.kind === "embedded" && hasExactSibling) return true;
|
|
177
|
+
if (!parse.gated && parse.kind === "volume" && hasNumberedSibling) {
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
if (parse.sideLetter) {
|
|
181
|
+
return siblingParses.some((p) => p.sideLetter);
|
|
182
|
+
}
|
|
147
183
|
if (parse.kind === "bonus" || parse.kind === "bare") {
|
|
148
184
|
const numberedCount = siblingParses.filter((p) => p.number !== void 0).length;
|
|
149
185
|
if (numberedCount >= 2) return true;
|
|
@@ -207,8 +243,10 @@ function groupAlbums(result, options = {}) {
|
|
|
207
243
|
(d) => d !== dir && dirname(d) === dirname(dir)
|
|
208
244
|
);
|
|
209
245
|
const corroboratedBySiblings = corroborated(parse, siblings);
|
|
210
|
-
let confidence = baseConfidence(parse);
|
|
211
|
-
if (parse.
|
|
246
|
+
let confidence = parse.gated ? "low" : baseConfidence(parse);
|
|
247
|
+
if (parse.gated) {
|
|
248
|
+
if (!corroboratedBySiblings) continue;
|
|
249
|
+
} else if (parse.kind === "bonus" || parse.kind === "bare") {
|
|
212
250
|
if (!corroboratedBySiblings) continue;
|
|
213
251
|
} else if (corroboratedBySiblings) {
|
|
214
252
|
confidence = "high";
|
|
@@ -501,5 +539,6 @@ function groupAlbums(result, options = {}) {
|
|
|
501
539
|
return { albums: albumsOut, singles, unmatched, errors };
|
|
502
540
|
}
|
|
503
541
|
export {
|
|
542
|
+
discFolderInfo,
|
|
504
543
|
groupAlbums
|
|
505
544
|
};
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
export type { AudioDynamics, AudioFileMetadata, DuplicateGroup, FolderScanItem, FolderScanOptions, FolderScanResult, FolderUpdateItem, FolderUpdateResult, } from "./types.js";
|
|
6
6
|
export { scanFolder } from "./scan-operations.js";
|
|
7
7
|
export { exportFolderMetadata, findDuplicates, updateFolderTags, } from "./folder-operations.js";
|
|
8
|
-
export { type AlbumDisc, type AlbumGroup, type AlbumGroupingResult, type AlbumGroupItem, type AlbumGroupKey, type DiscConfidence, groupAlbums, type GroupAlbumsOptions, } from "./group-albums.js";
|
|
8
|
+
export { type AlbumDisc, type AlbumGroup, type AlbumGroupingResult, type AlbumGroupItem, type AlbumGroupKey, type DiscConfidence, type DiscFolderInfo, discFolderInfo, groupAlbums, type GroupAlbumsOptions, } from "./group-albums.js";
|
|
9
9
|
export { scanForAlbums, type ScanForAlbumsOptions } from "./scan-for-albums.js";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/folder-api/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,WAAW,EACX,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/folder-api/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,cAAc,EACd,WAAW,EACX,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -5,10 +5,12 @@ import {
|
|
|
5
5
|
updateFolderTags
|
|
6
6
|
} from "./folder-operations.js";
|
|
7
7
|
import {
|
|
8
|
+
discFolderInfo,
|
|
8
9
|
groupAlbums
|
|
9
10
|
} from "./group-albums.js";
|
|
10
11
|
import { scanForAlbums } from "./scan-for-albums.js";
|
|
11
12
|
export {
|
|
13
|
+
discFolderInfo,
|
|
12
14
|
exportFolderMetadata,
|
|
13
15
|
findDuplicates,
|
|
14
16
|
groupAlbums,
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.7.
|
|
1
|
+
export declare const VERSION = "1.7.2";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/src/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "taglib-wasm",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.2",
|
|
4
4
|
"description": "TagLib-Wasm is the universal tagging library for TypeScript/JavaScript platforms: Browsers, Node.js, Deno, Bun, Cloudflare Workers, and Electron apps",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|