Skip to content

Commit 7fc74ef

Browse files
minht11Borewit
authored andcommitted
simplify parser loader
1 parent 87b4f28 commit 7fc74ef

File tree

14 files changed

+43
-81
lines changed

14 files changed

+43
-81
lines changed

lib/ParserFactory.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ export interface IParserLoader {
3434
parserType: ParserType;
3535

3636
/**
37-
* Lazy load the parser
37+
* Lazy load the parser implementation class.
3838
*/
39-
load(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<ITokenParser>
39+
load(): Promise<new (metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions) => ITokenParser>;
4040
}
4141

4242
export interface ITokenParser {
@@ -126,7 +126,8 @@ export class ParserFactory {
126126
// Parser found, execute parser
127127
debug(`Loading ${parserLoader.parserType} parser...`);
128128
const metadata = new MetadataCollector(opts);
129-
const parser = await parserLoader.load(metadata, tokenizer, opts ?? {});
129+
const ParserImpl = await parserLoader.load();
130+
const parser = new ParserImpl(metadata, tokenizer, opts ?? {});
130131
debug(`Parser ${parserLoader.parserType} loaded`);
131132
await parser.parse();
132133
return metadata.toCommonMetadata();

lib/aiff/AiffLoader.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import type { IParserLoader, ITokenParser } from '../ParserFactory.js';
2-
import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3-
import type { ITokenizer } from 'strtok3';
4-
import type { IOptions } from '../type.js';
1+
import type { IParserLoader } from '../ParserFactory.js';
52

63
export const aiffParserLoader: IParserLoader = {
74
parserType: 'aiff',
85
extensions: ['.aif', 'aiff', 'aifc'],
9-
async load(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<ITokenParser> {
10-
return new (await import('./AiffParser.js')).AIFFParser(metadata, tokenizer, options);
6+
async load() {
7+
return (await import('./AiffParser.js')).AIFFParser;
118
}
129
};

lib/apev2/Apev2Loader.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import type { IParserLoader, ITokenParser } from '../ParserFactory.js';
2-
import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3-
import type { ITokenizer } from 'strtok3';
4-
import type { IOptions } from '../type.js';
1+
import type { IParserLoader } from '../ParserFactory.js';
52

63
export const apeParserLoader: IParserLoader = {
74
parserType: 'apev2',
85
extensions: ['.ape'],
9-
async load(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<ITokenParser> {
10-
return new (await import('./APEv2Parser.js')).APEv2Parser(metadata, tokenizer, options);
6+
async load() {
7+
return (await import('./APEv2Parser.js')).APEv2Parser
118
}
129
};

lib/asf/AsfLoader.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import type { IParserLoader, ITokenParser } from '../ParserFactory.js';
2-
import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3-
import type { ITokenizer } from 'strtok3';
4-
import type { IOptions } from '../type.js';
1+
import type { IParserLoader } from '../ParserFactory.js';
52

63
export const asfParserLoader: IParserLoader = {
74
parserType: 'asf',
85
extensions: ['.asf'],
9-
async load(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<ITokenParser> {
10-
return new (await import('./AsfParser.js')).AsfParser(metadata, tokenizer, options);
6+
async load() {
7+
return (await import('./AsfParser.js')).AsfParser;
118
}
129
};

lib/dsdiff/DsdiffLoader.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import type { IParserLoader, ITokenParser } from '../ParserFactory.js';
2-
import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3-
import type { ITokenizer } from 'strtok3';
4-
import type { IOptions } from '../type.js';
1+
import type { IParserLoader } from '../ParserFactory.js';
52

63
export const dsdiffParserLoader: IParserLoader = {
74
parserType: 'dsdiff',
85
extensions: ['.dff'],
9-
async load(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<ITokenParser> {
10-
return new (await import('./DsdiffParser.js')).DsdiffParser(metadata, tokenizer, options);
6+
async load() {
7+
return (await import('./DsdiffParser.js')).DsdiffParser
118
}
129
};

lib/dsf/DsfLoader.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import type { IParserLoader, ITokenParser } from '../ParserFactory.js';
2-
import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3-
import type { ITokenizer } from 'strtok3';
4-
import type { IOptions } from '../type.js';
1+
import type { IParserLoader } from '../ParserFactory.js';
52

63
export const dsfParserLoader: IParserLoader = {
74
parserType: 'dsf',
85
extensions: ['.dsf'],
9-
async load(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<ITokenParser> {
10-
return new (await import('./DsfParser.js')).DsfParser(metadata, tokenizer, options);
6+
async load() {
7+
return (await import('./DsfParser.js')).DsfParser
118
}
129
};

lib/flac/FlacLoader.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import type { IParserLoader, ITokenParser } from '../ParserFactory.js';
2-
import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3-
import type { ITokenizer } from 'strtok3';
4-
import type { IOptions } from '../type.js';
1+
import type { IParserLoader } from '../ParserFactory.js';
52

63
export const flacParserLoader: IParserLoader = {
74
parserType: 'flac',
85
extensions: ['.flac'],
9-
async load(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<ITokenParser> {
10-
return new (await import('./FlacParser.js')).FlacParser(metadata, tokenizer, options);
6+
async load() {
7+
return (await import('./FlacParser.js')).FlacParser
118
}
129
};

lib/matroska/MatroskaLoader.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import type { IParserLoader, ITokenParser } from '../ParserFactory.js';
2-
import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3-
import type { ITokenizer } from 'strtok3';
4-
import type { IOptions } from '../type.js';
1+
import type { IParserLoader } from '../ParserFactory.js';
52

63
export const matroskaParserLoader: IParserLoader = {
74
parserType: 'matroska',
85
extensions: ['.mka', '.mkv', '.mk3d', '.mks', 'webm'],
9-
async load(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<ITokenParser> {
10-
return new (await import('./MatroskaParser.js')).MatroskaParser(metadata, tokenizer, options);
6+
async load() {
7+
return (await import('./MatroskaParser.js')).MatroskaParser
118
}
129
};

lib/mp4/Mp4Loader.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import type { IParserLoader, ITokenParser } from '../ParserFactory.js';
2-
import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3-
import type { ITokenizer } from 'strtok3';
4-
import type { IOptions } from '../type.js';
1+
import type { IParserLoader } from '../ParserFactory.js';
52

63
export const mp4ParserLoader: IParserLoader = {
74
parserType: 'mp4',
85
extensions: ['.mp4', '.m4a', '.m4b', '.m4pa', 'm4v', 'm4r', '3gp'],
9-
async load(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<ITokenParser> {
10-
return new (await import('./MP4Parser.js')).MP4Parser(metadata, tokenizer, options);
6+
async load() {
7+
return (await import('./MP4Parser.js')).MP4Parser
118
}
129
};

lib/mpeg/MpegLoader.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import type { IParserLoader, ITokenParser } from '../ParserFactory.js';
2-
import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3-
import type { ITokenizer } from 'strtok3';
4-
import type { IOptions } from '../type.js';
1+
import type { IParserLoader } from '../ParserFactory.js';
52

63
export const mpegParserLoader: IParserLoader = {
74
parserType: 'mpeg',
85
extensions: ['.mp2', '.mp3', '.m2a', '.aac', 'aacp'],
9-
async load(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<ITokenParser> {
10-
return new (await import('./MpegParser.js')).MpegParser(metadata, tokenizer, options);
6+
async load() {
7+
return (await import('./MpegParser.js')).MpegParser;
118
}
129
};

lib/musepack/MusepackLoader.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import type { IParserLoader, ITokenParser } from '../ParserFactory.js';
2-
import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3-
import type { ITokenizer } from 'strtok3';
4-
import type { IOptions } from '../type.js';
1+
import type { IParserLoader } from '../ParserFactory.js';
52

63
export const musepackParserLoader: IParserLoader = {
74
parserType: 'musepack',
85
extensions: ['.mpc'],
9-
async load(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<ITokenParser> {
10-
return new (await import('./MusepackParser.js')).MusepackParser(metadata, tokenizer, options);
6+
async load() {
7+
return (await import('./MusepackParser.js')).MusepackParser;
118
}
129
};

lib/ogg/OggLoader.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import type { IParserLoader, ITokenParser } from '../ParserFactory.js';
2-
import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3-
import type { ITokenizer } from 'strtok3';
4-
import type { IOptions } from '../type.js';
1+
import type { IParserLoader, } from '../ParserFactory.js';
52

63
export const oggParserLoader: IParserLoader = {
74
parserType: 'ogg',
85
extensions: ['.ogg', '.ogv', '.oga', '.ogm', '.ogx', '.opus', '.spx'],
9-
async load(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<ITokenParser> {
10-
return new (await import('./OggParser.js')).OggParser(metadata, tokenizer, options);
6+
async load() {
7+
return (await import('./OggParser.js')).OggParser
118
}
129
};

lib/wav/WaveLoader.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import type { IParserLoader, ITokenParser } from '../ParserFactory.js';
2-
import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3-
import type { ITokenizer } from 'strtok3';
4-
import type { IOptions } from '../type.js';
1+
import type { IParserLoader } from '../ParserFactory.js';
52

63
export const riffParserLoader: IParserLoader = {
74
parserType: 'riff',
85
extensions: ['.wav', 'wave', '.bwf'],
9-
async load(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<ITokenParser> {
10-
return new (await import('./WaveParser.js')).WaveParser(metadata, tokenizer, options);
6+
async load() {
7+
return (await import('./WaveParser.js')).WaveParser
118
}
129
};

lib/wavpack/WavPackLoader.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import type { IParserLoader, ITokenParser } from '../ParserFactory.js';
2-
import type { INativeMetadataCollector } from '../common/MetadataCollector.js';
3-
import type { ITokenizer } from 'strtok3';
4-
import type { IOptions } from '../type.js';
1+
import type { IParserLoader } from '../ParserFactory.js';
52

63
export const wavpackParserLoader: IParserLoader = {
74
parserType: 'wavpack',
85
extensions: ['.wv', '.wvp'],
9-
async load(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<ITokenParser> {
10-
return new (await import('./WavPackParser.js')).WavPackParser(metadata, tokenizer, options);
6+
async load() {
7+
return (await import('./WavPackParser.js')).WavPackParser;
118
}
129
};

0 commit comments

Comments
 (0)