Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 124 additions & 1 deletion declarations.d.ts
Original file line number Diff line number Diff line change
@@ -1 +1,124 @@
declare module "mp3-parser";
declare module "mp3-parser" {
/** Section metadata present on all parsed structures */
export interface Mp3Section {
type: string;
offset: number;
byteLength: number;
}

/** Section metadata for MP3 frames, includes sample info */
export interface Mp3FrameSection extends Mp3Section {
type: "frame";
sampleLength: number;
nextFrameIndex: number;
}

/** Frame header information */
export interface Mp3FrameHeader {
_section: {
type: "frameHeader";
byteLength: number;
offset: number;
};
mpegAudioVersionBits: string;
mpegAudioVersion: string;
layerDescriptionBits: string;
layerDescription: string;
isProtected: number;
protectionBit: string;
bitrateBits: string;
bitrate: number | "free" | "bad";
samplingRateBits: string;
samplingRate: number | "reserved";
frameIsPaddedBit: string;
frameIsPadded: boolean;
framePadding: number;
privateBit: string;
channelModeBits: string;
channelMode: string;
}

/** Complete MP3 frame structure */
export interface Mp3Frame {
_section: Mp3FrameSection;
header: Mp3FrameHeader;
}

/** ID3v2 tag section */
export interface Mp3Id3v2Section extends Mp3Section {
type: "ID3v2";
}

/** ID3v2 tag header */
export interface Mp3Id3v2Header {
majorVersion: number;
minorRevision: number;
flagsOctet: number;
unsynchronisationFlag: boolean;
extendedHeaderFlag: boolean;
experimentalIndicatorFlag: boolean;
size: number;
}

/** Complete ID3v2 tag structure */
export interface Mp3Id3v2Tag {
_section: Mp3Id3v2Section;
header: Mp3Id3v2Header;
frames: unknown[];
}

/**
* Read and return description of frame located at `offset` of DataView `view`.
* If `requireNextFrame` is set, the presence of a next valid frame will be
* required for this frame to be regarded as valid.
* Returns null if no frame is found at `offset`.
*/
export function readFrame(
view: DataView,
offset: number,
requireNextFrame?: boolean
): Mp3Frame | null;

/**
* Read and return description of ID3v2 Tag located at `offset` of DataView `view`.
* Returns null if no tag is found at `offset`.
*/
export function readId3v2Tag(
view: DataView,
offset: number
): Mp3Id3v2Tag | null;

/**
* Read and return description of frame header at `offset` of DataView `view`.
* Returns null if no frame header is found at `offset`.
*/
export function readFrameHeader(
view: DataView,
offset: number
): Mp3FrameHeader | null;

/**
* Locate and return description of the very last valid frame in given DataView.
*/
export function readLastFrame(
view: DataView,
offset?: number,
requireNextFrame?: boolean
): Mp3Frame | null;

/**
* Read and return description of Xing/Lame Tag at `offset`.
*/
export function readXingTag(
view: DataView,
offset: number
): unknown | null;

/**
* Read and return descriptions of all tags found up to (and including) the first frame.
*/
export function readTags(
view: DataView,
offset?: number
): unknown[];
}
80 changes: 40 additions & 40 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
},
"dependencies": {
"@aws-sdk/client-s3": "^3.913.0",
"@clerk/nextjs": "^6.33.7",
"@clerk/nextjs": "^6.36.2",
"@mantine/core": "^8.3.5",
"@mantine/hooks": "^8.3.5",
"@mantine/notifications": "^8.3.5",
Expand All @@ -25,7 +25,7 @@
"firebase-admin": "^13.5.0",
"motion": "^12.23.24",
"mp3-parser": "^0.3.0",
"next": "15.5.7",
"next": "15.5.8",
"react": "19.1.2",
"react-confetti-boom": "^2.0.1",
"react-dom": "19.1.2",
Expand Down
Loading