@storyteller-platform/audiobook 0.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.
package/dist/base.cjs ADDED
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var base_exports = {};
20
+ __export(base_exports, {
21
+ BaseAudiobook: () => BaseAudiobook,
22
+ BaseAudiobookEntry: () => BaseAudiobookEntry
23
+ });
24
+ module.exports = __toCommonJS(base_exports);
25
+ var import_node_taglib_sharp = require("node-taglib-sharp");
26
+ function splitNames(names) {
27
+ return names.flatMap(
28
+ (entry) => entry.split(/[;,/]/).map((name) => name.trim())
29
+ );
30
+ }
31
+ class BaseAudiobookEntry {
32
+ async getFile() {
33
+ if (this.file) return this.file;
34
+ const file = await this.createFile();
35
+ this.file = file;
36
+ return this.file;
37
+ }
38
+ async getTitle() {
39
+ const file = await this.getFile();
40
+ return file.tag.title;
41
+ }
42
+ async setTitle(title) {
43
+ const file = await this.getFile();
44
+ file.tag.title = title;
45
+ }
46
+ async getSubtitle() {
47
+ const file = await this.getFile();
48
+ return file.tag.subtitle;
49
+ }
50
+ async setSubtitle(subtitle) {
51
+ const file = await this.getFile();
52
+ file.tag.subtitle = subtitle;
53
+ }
54
+ async getDescription() {
55
+ const file = await this.getFile();
56
+ return file.tag.description || file.tag.comment || null;
57
+ }
58
+ async setDescription(description) {
59
+ const file = await this.getFile();
60
+ file.tag.description = description;
61
+ }
62
+ async getAuthors() {
63
+ const file = await this.getFile();
64
+ const albumArtists = file.tag.albumArtists;
65
+ if (albumArtists.length) {
66
+ return splitNames(albumArtists);
67
+ }
68
+ const artists = file.tag.performers;
69
+ return splitNames(artists);
70
+ }
71
+ async setAuthors(authors) {
72
+ const file = await this.getFile();
73
+ file.tag.albumArtists = authors;
74
+ file.tag.performers = authors;
75
+ }
76
+ async getNarrators() {
77
+ const file = await this.getFile();
78
+ const composers = file.tag.composers;
79
+ if (composers.length) {
80
+ return splitNames(composers);
81
+ }
82
+ const conductor = file.tag.conductor;
83
+ if (!conductor) return [];
84
+ return splitNames([conductor]);
85
+ }
86
+ async setNarrators(narrators) {
87
+ const file = await this.getFile();
88
+ file.tag.composers = narrators;
89
+ file.tag.conductor = narrators.join(";");
90
+ }
91
+ async getCoverArt() {
92
+ const file = await this.getFile();
93
+ return file.tag.pictures.find(
94
+ (picture) => picture.type === import_node_taglib_sharp.PictureType.FrontCover
95
+ ) ?? null;
96
+ }
97
+ async setCoverArt(picture) {
98
+ const file = await this.getFile();
99
+ const pictures = file.tag.pictures;
100
+ const frontCover = pictures.find(
101
+ (picture2) => picture2.type === import_node_taglib_sharp.PictureType.FrontCover
102
+ );
103
+ if (frontCover) {
104
+ Object.assign(frontCover, picture);
105
+ } else {
106
+ pictures.push(picture);
107
+ }
108
+ file.tag.pictures = pictures;
109
+ }
110
+ async getPublisher() {
111
+ const file = await this.getFile();
112
+ return file.tag.publisher;
113
+ }
114
+ async setPublisher(publisher) {
115
+ const file = await this.getFile();
116
+ file.tag.publisher = publisher;
117
+ }
118
+ async getReleased() {
119
+ const file = await this.getFile();
120
+ return file.tag.year.toString();
121
+ }
122
+ async setReleased(released) {
123
+ const file = await this.getFile();
124
+ file.tag.year = parseInt(released);
125
+ }
126
+ save() {
127
+ var _a;
128
+ (_a = this.file) == null ? void 0 : _a.save();
129
+ }
130
+ }
131
+ class BaseAudiobook {
132
+ metadata = {};
133
+ async getFirstValue(getter) {
134
+ for (const entry of this.entries) {
135
+ const value = await getter(entry);
136
+ if (value) return value;
137
+ }
138
+ return null;
139
+ }
140
+ async setValue(setter) {
141
+ for (const entry of this.entries) {
142
+ await setter(entry);
143
+ }
144
+ }
145
+ async getTitle() {
146
+ if (this.metadata.title) {
147
+ return this.metadata.title;
148
+ }
149
+ const title = await this.getFirstValue((entry) => entry.getTitle());
150
+ if (title) this.metadata.title = title;
151
+ return title;
152
+ }
153
+ async setTitle(title) {
154
+ this.metadata.title = title;
155
+ await this.setValue((entry) => entry.setTitle(title));
156
+ }
157
+ async getSubtitle() {
158
+ if (this.metadata.subtitle) {
159
+ return this.metadata.subtitle;
160
+ }
161
+ const subtitle = await this.getFirstValue((entry) => entry.getSubtitle());
162
+ if (subtitle) this.metadata.subtitle = subtitle;
163
+ return subtitle;
164
+ }
165
+ async setSubtitle(subtitle) {
166
+ this.metadata.subtitle = subtitle;
167
+ await this.setValue((entry) => entry.setSubtitle(subtitle));
168
+ }
169
+ async getDescription() {
170
+ if (this.metadata.description) {
171
+ return this.metadata.description;
172
+ }
173
+ const description = await this.getFirstValue(
174
+ (entry) => entry.getDescription()
175
+ );
176
+ if (description) this.metadata.description = description;
177
+ return description;
178
+ }
179
+ async setDescription(description) {
180
+ this.metadata.description = description;
181
+ await this.setValue((entry) => entry.setDescription(description));
182
+ }
183
+ async getAuthors() {
184
+ if (this.metadata.authors) {
185
+ return this.metadata.authors;
186
+ }
187
+ const authors = await this.getFirstValue((entry) => entry.getAuthors());
188
+ if (authors) this.metadata.authors = authors;
189
+ return authors ?? [];
190
+ }
191
+ async setAuthors(authors) {
192
+ this.metadata.authors = authors;
193
+ await this.setValue((entry) => entry.setAuthors(authors));
194
+ }
195
+ async getNarrators() {
196
+ if (this.metadata.narrators) {
197
+ return this.metadata.narrators;
198
+ }
199
+ const narrators = await this.getFirstValue((entry) => entry.getNarrators());
200
+ if (narrators) this.metadata.narrators = narrators;
201
+ return narrators ?? [];
202
+ }
203
+ async setNarrators(narrators) {
204
+ this.metadata.narrators = narrators;
205
+ await this.setValue((entry) => entry.setNarrators(narrators));
206
+ }
207
+ async getCoverArt() {
208
+ if (this.metadata.coverArt) {
209
+ return this.metadata.coverArt;
210
+ }
211
+ const coverArt = await this.getFirstValue((entry) => entry.getCoverArt());
212
+ if (coverArt) this.metadata.coverArt = coverArt;
213
+ return coverArt;
214
+ }
215
+ async setCoverArt(picture) {
216
+ this.metadata.coverArt = picture;
217
+ await this.setValue((entry) => entry.setCoverArt(picture));
218
+ }
219
+ async getPublisher() {
220
+ if (this.metadata.publisher) {
221
+ return this.metadata.publisher;
222
+ }
223
+ const publisher = await this.getFirstValue((entry) => entry.getPublisher());
224
+ if (publisher) this.metadata.publisher = publisher;
225
+ return publisher;
226
+ }
227
+ async setPublisher(publisher) {
228
+ this.metadata.publisher = publisher;
229
+ await this.setValue((entry) => entry.setPublisher(publisher));
230
+ }
231
+ async getReleased() {
232
+ if (this.metadata.released) {
233
+ return this.metadata.released;
234
+ }
235
+ const released = await this.getFirstValue((entry) => entry.getReleased());
236
+ if (released) this.metadata.released = released;
237
+ return released;
238
+ }
239
+ async setReleased(released) {
240
+ this.metadata.released = released;
241
+ await this.setValue((entry) => entry.setReleased(released));
242
+ }
243
+ }
244
+ // Annotate the CommonJS export names for ESM import in node:
245
+ 0 && (module.exports = {
246
+ BaseAudiobook,
247
+ BaseAudiobookEntry
248
+ });
@@ -0,0 +1,67 @@
1
+ import { File, IPicture } from 'node-taglib-sharp';
2
+
3
+ declare abstract class BaseAudiobookEntry {
4
+ abstract filename: string;
5
+ protected abstract file: File | null;
6
+ abstract getData(): Promise<Uint8Array>;
7
+ abstract createFile(): Promise<File>;
8
+ getFile(): Promise<File>;
9
+ getTitle(): Promise<string | null>;
10
+ setTitle(title: string): Promise<void>;
11
+ getSubtitle(): Promise<string | null>;
12
+ setSubtitle(subtitle: string): Promise<void>;
13
+ getDescription(): Promise<string | null>;
14
+ setDescription(description: string): Promise<void>;
15
+ getAuthors(): Promise<string[]>;
16
+ setAuthors(authors: string[]): Promise<void>;
17
+ getNarrators(): Promise<string[]>;
18
+ setNarrators(narrators: string[]): Promise<void>;
19
+ getCoverArt(): Promise<IPicture | null>;
20
+ setCoverArt(picture: IPicture): Promise<void>;
21
+ getPublisher(): Promise<string | null>;
22
+ setPublisher(publisher: string): Promise<void>;
23
+ getReleased(): Promise<string | null>;
24
+ setReleased(released: string): Promise<void>;
25
+ save(): void;
26
+ }
27
+ interface AudiobookChapter {
28
+ filename: string;
29
+ start: number;
30
+ stop: number;
31
+ title: string;
32
+ }
33
+ interface AudiobookMetadata {
34
+ title?: string;
35
+ subtitle?: string;
36
+ description?: string;
37
+ coverArt?: IPicture;
38
+ chapters?: AudiobookChapter[];
39
+ authors?: string[];
40
+ narrators?: string[];
41
+ publisher?: string;
42
+ released?: string;
43
+ }
44
+ declare abstract class BaseAudiobook {
45
+ protected metadata: AudiobookMetadata;
46
+ protected abstract entries: BaseAudiobookEntry[];
47
+ protected getFirstValue<T>(getter: (entry: BaseAudiobookEntry) => Promise<T>): Promise<T | null>;
48
+ protected setValue(setter: (entry: BaseAudiobookEntry) => Promise<void>): Promise<void>;
49
+ getTitle(): Promise<string | null>;
50
+ setTitle(title: string): Promise<void>;
51
+ getSubtitle(): Promise<string | null>;
52
+ setSubtitle(subtitle: string): Promise<void>;
53
+ getDescription(): Promise<string | null>;
54
+ setDescription(description: string): Promise<void>;
55
+ getAuthors(): Promise<string[]>;
56
+ setAuthors(authors: string[]): Promise<void>;
57
+ getNarrators(): Promise<string[]>;
58
+ setNarrators(narrators: string[]): Promise<void>;
59
+ getCoverArt(): Promise<IPicture | null>;
60
+ setCoverArt(picture: IPicture): Promise<void>;
61
+ getPublisher(): Promise<string | null>;
62
+ setPublisher(publisher: string): Promise<void>;
63
+ getReleased(): Promise<string | null>;
64
+ setReleased(released: string): Promise<void>;
65
+ }
66
+
67
+ export { type AudiobookChapter, type AudiobookMetadata, BaseAudiobook, BaseAudiobookEntry };
package/dist/base.d.ts ADDED
@@ -0,0 +1,67 @@
1
+ import { File, IPicture } from 'node-taglib-sharp';
2
+
3
+ declare abstract class BaseAudiobookEntry {
4
+ abstract filename: string;
5
+ protected abstract file: File | null;
6
+ abstract getData(): Promise<Uint8Array>;
7
+ abstract createFile(): Promise<File>;
8
+ getFile(): Promise<File>;
9
+ getTitle(): Promise<string | null>;
10
+ setTitle(title: string): Promise<void>;
11
+ getSubtitle(): Promise<string | null>;
12
+ setSubtitle(subtitle: string): Promise<void>;
13
+ getDescription(): Promise<string | null>;
14
+ setDescription(description: string): Promise<void>;
15
+ getAuthors(): Promise<string[]>;
16
+ setAuthors(authors: string[]): Promise<void>;
17
+ getNarrators(): Promise<string[]>;
18
+ setNarrators(narrators: string[]): Promise<void>;
19
+ getCoverArt(): Promise<IPicture | null>;
20
+ setCoverArt(picture: IPicture): Promise<void>;
21
+ getPublisher(): Promise<string | null>;
22
+ setPublisher(publisher: string): Promise<void>;
23
+ getReleased(): Promise<string | null>;
24
+ setReleased(released: string): Promise<void>;
25
+ save(): void;
26
+ }
27
+ interface AudiobookChapter {
28
+ filename: string;
29
+ start: number;
30
+ stop: number;
31
+ title: string;
32
+ }
33
+ interface AudiobookMetadata {
34
+ title?: string;
35
+ subtitle?: string;
36
+ description?: string;
37
+ coverArt?: IPicture;
38
+ chapters?: AudiobookChapter[];
39
+ authors?: string[];
40
+ narrators?: string[];
41
+ publisher?: string;
42
+ released?: string;
43
+ }
44
+ declare abstract class BaseAudiobook {
45
+ protected metadata: AudiobookMetadata;
46
+ protected abstract entries: BaseAudiobookEntry[];
47
+ protected getFirstValue<T>(getter: (entry: BaseAudiobookEntry) => Promise<T>): Promise<T | null>;
48
+ protected setValue(setter: (entry: BaseAudiobookEntry) => Promise<void>): Promise<void>;
49
+ getTitle(): Promise<string | null>;
50
+ setTitle(title: string): Promise<void>;
51
+ getSubtitle(): Promise<string | null>;
52
+ setSubtitle(subtitle: string): Promise<void>;
53
+ getDescription(): Promise<string | null>;
54
+ setDescription(description: string): Promise<void>;
55
+ getAuthors(): Promise<string[]>;
56
+ setAuthors(authors: string[]): Promise<void>;
57
+ getNarrators(): Promise<string[]>;
58
+ setNarrators(narrators: string[]): Promise<void>;
59
+ getCoverArt(): Promise<IPicture | null>;
60
+ setCoverArt(picture: IPicture): Promise<void>;
61
+ getPublisher(): Promise<string | null>;
62
+ setPublisher(publisher: string): Promise<void>;
63
+ getReleased(): Promise<string | null>;
64
+ setReleased(released: string): Promise<void>;
65
+ }
66
+
67
+ export { type AudiobookChapter, type AudiobookMetadata, BaseAudiobook, BaseAudiobookEntry };
package/dist/base.js ADDED
@@ -0,0 +1,223 @@
1
+ import { PictureType } from "node-taglib-sharp";
2
+ function splitNames(names) {
3
+ return names.flatMap(
4
+ (entry) => entry.split(/[;,/]/).map((name) => name.trim())
5
+ );
6
+ }
7
+ class BaseAudiobookEntry {
8
+ async getFile() {
9
+ if (this.file) return this.file;
10
+ const file = await this.createFile();
11
+ this.file = file;
12
+ return this.file;
13
+ }
14
+ async getTitle() {
15
+ const file = await this.getFile();
16
+ return file.tag.title;
17
+ }
18
+ async setTitle(title) {
19
+ const file = await this.getFile();
20
+ file.tag.title = title;
21
+ }
22
+ async getSubtitle() {
23
+ const file = await this.getFile();
24
+ return file.tag.subtitle;
25
+ }
26
+ async setSubtitle(subtitle) {
27
+ const file = await this.getFile();
28
+ file.tag.subtitle = subtitle;
29
+ }
30
+ async getDescription() {
31
+ const file = await this.getFile();
32
+ return file.tag.description || file.tag.comment || null;
33
+ }
34
+ async setDescription(description) {
35
+ const file = await this.getFile();
36
+ file.tag.description = description;
37
+ }
38
+ async getAuthors() {
39
+ const file = await this.getFile();
40
+ const albumArtists = file.tag.albumArtists;
41
+ if (albumArtists.length) {
42
+ return splitNames(albumArtists);
43
+ }
44
+ const artists = file.tag.performers;
45
+ return splitNames(artists);
46
+ }
47
+ async setAuthors(authors) {
48
+ const file = await this.getFile();
49
+ file.tag.albumArtists = authors;
50
+ file.tag.performers = authors;
51
+ }
52
+ async getNarrators() {
53
+ const file = await this.getFile();
54
+ const composers = file.tag.composers;
55
+ if (composers.length) {
56
+ return splitNames(composers);
57
+ }
58
+ const conductor = file.tag.conductor;
59
+ if (!conductor) return [];
60
+ return splitNames([conductor]);
61
+ }
62
+ async setNarrators(narrators) {
63
+ const file = await this.getFile();
64
+ file.tag.composers = narrators;
65
+ file.tag.conductor = narrators.join(";");
66
+ }
67
+ async getCoverArt() {
68
+ const file = await this.getFile();
69
+ return file.tag.pictures.find(
70
+ (picture) => picture.type === PictureType.FrontCover
71
+ ) ?? null;
72
+ }
73
+ async setCoverArt(picture) {
74
+ const file = await this.getFile();
75
+ const pictures = file.tag.pictures;
76
+ const frontCover = pictures.find(
77
+ (picture2) => picture2.type === PictureType.FrontCover
78
+ );
79
+ if (frontCover) {
80
+ Object.assign(frontCover, picture);
81
+ } else {
82
+ pictures.push(picture);
83
+ }
84
+ file.tag.pictures = pictures;
85
+ }
86
+ async getPublisher() {
87
+ const file = await this.getFile();
88
+ return file.tag.publisher;
89
+ }
90
+ async setPublisher(publisher) {
91
+ const file = await this.getFile();
92
+ file.tag.publisher = publisher;
93
+ }
94
+ async getReleased() {
95
+ const file = await this.getFile();
96
+ return file.tag.year.toString();
97
+ }
98
+ async setReleased(released) {
99
+ const file = await this.getFile();
100
+ file.tag.year = parseInt(released);
101
+ }
102
+ save() {
103
+ var _a;
104
+ (_a = this.file) == null ? void 0 : _a.save();
105
+ }
106
+ }
107
+ class BaseAudiobook {
108
+ metadata = {};
109
+ async getFirstValue(getter) {
110
+ for (const entry of this.entries) {
111
+ const value = await getter(entry);
112
+ if (value) return value;
113
+ }
114
+ return null;
115
+ }
116
+ async setValue(setter) {
117
+ for (const entry of this.entries) {
118
+ await setter(entry);
119
+ }
120
+ }
121
+ async getTitle() {
122
+ if (this.metadata.title) {
123
+ return this.metadata.title;
124
+ }
125
+ const title = await this.getFirstValue((entry) => entry.getTitle());
126
+ if (title) this.metadata.title = title;
127
+ return title;
128
+ }
129
+ async setTitle(title) {
130
+ this.metadata.title = title;
131
+ await this.setValue((entry) => entry.setTitle(title));
132
+ }
133
+ async getSubtitle() {
134
+ if (this.metadata.subtitle) {
135
+ return this.metadata.subtitle;
136
+ }
137
+ const subtitle = await this.getFirstValue((entry) => entry.getSubtitle());
138
+ if (subtitle) this.metadata.subtitle = subtitle;
139
+ return subtitle;
140
+ }
141
+ async setSubtitle(subtitle) {
142
+ this.metadata.subtitle = subtitle;
143
+ await this.setValue((entry) => entry.setSubtitle(subtitle));
144
+ }
145
+ async getDescription() {
146
+ if (this.metadata.description) {
147
+ return this.metadata.description;
148
+ }
149
+ const description = await this.getFirstValue(
150
+ (entry) => entry.getDescription()
151
+ );
152
+ if (description) this.metadata.description = description;
153
+ return description;
154
+ }
155
+ async setDescription(description) {
156
+ this.metadata.description = description;
157
+ await this.setValue((entry) => entry.setDescription(description));
158
+ }
159
+ async getAuthors() {
160
+ if (this.metadata.authors) {
161
+ return this.metadata.authors;
162
+ }
163
+ const authors = await this.getFirstValue((entry) => entry.getAuthors());
164
+ if (authors) this.metadata.authors = authors;
165
+ return authors ?? [];
166
+ }
167
+ async setAuthors(authors) {
168
+ this.metadata.authors = authors;
169
+ await this.setValue((entry) => entry.setAuthors(authors));
170
+ }
171
+ async getNarrators() {
172
+ if (this.metadata.narrators) {
173
+ return this.metadata.narrators;
174
+ }
175
+ const narrators = await this.getFirstValue((entry) => entry.getNarrators());
176
+ if (narrators) this.metadata.narrators = narrators;
177
+ return narrators ?? [];
178
+ }
179
+ async setNarrators(narrators) {
180
+ this.metadata.narrators = narrators;
181
+ await this.setValue((entry) => entry.setNarrators(narrators));
182
+ }
183
+ async getCoverArt() {
184
+ if (this.metadata.coverArt) {
185
+ return this.metadata.coverArt;
186
+ }
187
+ const coverArt = await this.getFirstValue((entry) => entry.getCoverArt());
188
+ if (coverArt) this.metadata.coverArt = coverArt;
189
+ return coverArt;
190
+ }
191
+ async setCoverArt(picture) {
192
+ this.metadata.coverArt = picture;
193
+ await this.setValue((entry) => entry.setCoverArt(picture));
194
+ }
195
+ async getPublisher() {
196
+ if (this.metadata.publisher) {
197
+ return this.metadata.publisher;
198
+ }
199
+ const publisher = await this.getFirstValue((entry) => entry.getPublisher());
200
+ if (publisher) this.metadata.publisher = publisher;
201
+ return publisher;
202
+ }
203
+ async setPublisher(publisher) {
204
+ this.metadata.publisher = publisher;
205
+ await this.setValue((entry) => entry.setPublisher(publisher));
206
+ }
207
+ async getReleased() {
208
+ if (this.metadata.released) {
209
+ return this.metadata.released;
210
+ }
211
+ const released = await this.getFirstValue((entry) => entry.getReleased());
212
+ if (released) this.metadata.released = released;
213
+ return released;
214
+ }
215
+ async setReleased(released) {
216
+ this.metadata.released = released;
217
+ await this.setValue((entry) => entry.setReleased(released));
218
+ }
219
+ }
220
+ export {
221
+ BaseAudiobook,
222
+ BaseAudiobookEntry
223
+ };
package/dist/entry.cjs ADDED
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var entry_exports = {};
20
+ __export(entry_exports, {
21
+ AudiobookEntry: () => AudiobookEntry
22
+ });
23
+ module.exports = __toCommonJS(entry_exports);
24
+ var import_zip = require("@zip.js/zip.js");
25
+ var import_node_taglib_sharp = require("node-taglib-sharp");
26
+ var import_base = require("./base.cjs");
27
+ var import_Uint8ArrayFileAbstraction = require("./taglib/Uint8ArrayFileAbstraction.cjs");
28
+ class AudiobookEntry extends import_base.BaseAudiobookEntry {
29
+ constructor(entry) {
30
+ super();
31
+ this.entry = entry;
32
+ this.filename = entry.filename;
33
+ }
34
+ filename;
35
+ file = null;
36
+ async readData() {
37
+ if ("data" in this.entry) {
38
+ return this.entry.data;
39
+ }
40
+ const writer = new import_zip.Uint8ArrayWriter();
41
+ return await this.entry.getData(writer);
42
+ }
43
+ async getData() {
44
+ const file = await this.getFile();
45
+ return file.fileAbstraction.data;
46
+ }
47
+ async createFile() {
48
+ const data = await this.readData();
49
+ return import_node_taglib_sharp.File.createFromAbstraction(
50
+ new import_Uint8ArrayFileAbstraction.Uint8ArrayFileAbstraction(this.filename, data)
51
+ );
52
+ }
53
+ }
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ AudiobookEntry
57
+ });
@@ -0,0 +1,19 @@
1
+ import { Entry } from '@zip.js/zip.js';
2
+ import { File } from 'node-taglib-sharp';
3
+ import { BaseAudiobookEntry } from './base.cjs';
4
+
5
+ interface Uint8ArrayEntry {
6
+ filename: string;
7
+ data: Uint8Array;
8
+ }
9
+ declare class AudiobookEntry extends BaseAudiobookEntry {
10
+ protected entry: Uint8ArrayEntry | Entry;
11
+ filename: string;
12
+ protected file: File | null;
13
+ protected readData(): Promise<Uint8Array<ArrayBufferLike>>;
14
+ getData(): Promise<Uint8Array<ArrayBufferLike>>;
15
+ createFile(): Promise<File>;
16
+ constructor(entry: Uint8ArrayEntry | Entry);
17
+ }
18
+
19
+ export { AudiobookEntry, type Uint8ArrayEntry };
@@ -0,0 +1,19 @@
1
+ import { Entry } from '@zip.js/zip.js';
2
+ import { File } from 'node-taglib-sharp';
3
+ import { BaseAudiobookEntry } from './base.js';
4
+
5
+ interface Uint8ArrayEntry {
6
+ filename: string;
7
+ data: Uint8Array;
8
+ }
9
+ declare class AudiobookEntry extends BaseAudiobookEntry {
10
+ protected entry: Uint8ArrayEntry | Entry;
11
+ filename: string;
12
+ protected file: File | null;
13
+ protected readData(): Promise<Uint8Array<ArrayBufferLike>>;
14
+ getData(): Promise<Uint8Array<ArrayBufferLike>>;
15
+ createFile(): Promise<File>;
16
+ constructor(entry: Uint8ArrayEntry | Entry);
17
+ }
18
+
19
+ export { AudiobookEntry, type Uint8ArrayEntry };