committed by
							
								 GitHub
								GitHub
							
						
					
				
				 16 changed files with 1246 additions and 701 deletions
			
			
		
								
									
										File diff suppressed because it is too large
									
								
							
						
					| @ -0,0 +1,52 @@ | |||
| export const FLAC_HEADER = [0x66, 0x4C, 0x61, 0x43]; | |||
| export const MP3_HEADER = [0x49, 0x44, 0x33]; | |||
| export const OGG_HEADER = [0x4F, 0x67, 0x67, 0x53]; | |||
| export const M4A_HEADER = [0x66, 0x74, 0x79, 0x70]; | |||
| export const WMA_HEADER = [ | |||
|     0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, | |||
|     0xA6, 0xD9, 0x00, 0xAA, 0x00, 0x62, 0xCE, 0x6C, | |||
| ] | |||
| export const WAV_HEADER = [0x52, 0x49, 0x46, 0x46] | |||
| export const AAC_HEADER = [0xFF, 0xF1] | |||
| 
 | |||
| export function BytesHasPrefix(data: Uint8Array, prefix: number[]): boolean { | |||
|     if (prefix.length > data.length) return false | |||
|     return prefix.every((val, idx) => { | |||
|         return val === data[idx]; | |||
|     }) | |||
| } | |||
| 
 | |||
| export function BytesEquals(data: Uint8Array, another: Uint8Array): boolean { | |||
|     if (another.length != data.length) return false | |||
|     return data.every((val, idx) => { | |||
|         return val === another[idx]; | |||
|     }) | |||
| } | |||
| 
 | |||
| export function SniffAudioExt(data: Uint8Array, fallback_ext: string = "mp3"): string { | |||
|     if (BytesHasPrefix(data, MP3_HEADER)) return ".mp3" | |||
|     if (BytesHasPrefix(data, FLAC_HEADER)) return ".flac" | |||
|     if (BytesHasPrefix(data, OGG_HEADER)) return ".ogg" | |||
|     if (data.length >= 4 + M4A_HEADER.length && | |||
|         BytesHasPrefix(data.slice(4), M4A_HEADER)) return ".m4a" | |||
|     if (BytesHasPrefix(data, WAV_HEADER)) return ".wav" | |||
|     if (BytesHasPrefix(data, WMA_HEADER)) return ".wma" | |||
|     if (BytesHasPrefix(data, AAC_HEADER)) return ".aac" | |||
|     return fallback_ext; | |||
| } | |||
| 
 | |||
| export function GetArrayBuffer(obj: Blob): Promise<ArrayBuffer> { | |||
|     if (!!obj.arrayBuffer) return obj.arrayBuffer() | |||
|     return new Promise((resolve, reject) => { | |||
|         const reader = new FileReader(); | |||
|         reader.onload = (e) => { | |||
|             const rs = e.target?.result | |||
|             if (!rs) { | |||
|                 reject("read file failed") | |||
|             } else { | |||
|                 resolve(rs as ArrayBuffer) | |||
|             } | |||
|         }; | |||
|         reader.readAsArrayBuffer(obj); | |||
|     }); | |||
| } | |||
| @ -0,0 +1,17 @@ | |||
| import Vue, {VNode} from 'vue' | |||
| 
 | |||
| declare global { | |||
|   namespace JSX { | |||
|     // tslint:disable no-empty-interface
 | |||
|     interface Element extends VNode { | |||
|     } | |||
| 
 | |||
|     // tslint:disable no-empty-interface
 | |||
|     interface ElementClass extends Vue { | |||
|     } | |||
| 
 | |||
|     interface IntrinsicElements { | |||
|       [elem: string]: any | |||
|     } | |||
|   } | |||
| } | |||
| @ -0,0 +1,4 @@ | |||
| declare module '*.vue' { | |||
|   import Vue from 'vue' | |||
|   export default Vue | |||
| } | |||
| @ -0,0 +1,41 @@ | |||
| { | |||
|   "compilerOptions": { | |||
|     "target": "esnext", | |||
|     "module": "esnext", | |||
|     "strict": true, | |||
|     "jsx": "preserve", | |||
|     "importHelpers": true, | |||
|     "moduleResolution": "node", | |||
|     "experimentalDecorators": true, | |||
|     "allowJs": true, | |||
|     "skipLibCheck": true, | |||
|     "esModuleInterop": true, | |||
|     "allowSyntheticDefaultImports": true, | |||
|     "sourceMap": true, | |||
|     "baseUrl": ".", | |||
|     "types": [ | |||
|       "webpack-env" | |||
|     ], | |||
|     "paths": { | |||
|       "@/*": [ | |||
|         "src/*" | |||
|       ] | |||
|     }, | |||
|     "lib": [ | |||
|       "esnext", | |||
|       "dom", | |||
|       "dom.iterable", | |||
|       "scripthost" | |||
|     ] | |||
|   }, | |||
|   "include": [ | |||
|     "src/**/*.ts", | |||
|     "src/**/*.tsx", | |||
|     "src/**/*.vue", | |||
|     "tests/**/*.ts", | |||
|     "tests/**/*.tsx" | |||
|   ], | |||
|   "exclude": [ | |||
|     "node_modules" | |||
|   ] | |||
| } | |||
					Loading…
					
					
				
		Reference in new issue