Revert vite build

This commit is contained in:
lyswhut
2023-08-17 17:49:47 +08:00
parent 99eb2856f7
commit 53bc50d05c
63 changed files with 11408 additions and 2565 deletions
+14 -11
View File
@@ -1,22 +1,25 @@
import upperFirst from 'lodash/upperFirst'
import camelCase from 'lodash/camelCase'
const requireComponent = import.meta.glob(['./**/*.vue', '!./**/components/**/*.vue'], { eager: true })
const vueFileRxp = /\.vue$/
const vueIndexFileRxp = /\/index\.vue$/
const requireComponent = require.context('./', true, /\.vue$/)
const vueFileRxp = /\.vue$/
export default app => {
Object.entries(requireComponent).forEach(([path, module]) => {
path = path.replace(/^\.\//, '')
let fileName = vueIndexFileRxp.test(path)
? path.replace(vueIndexFileRxp, '')
: path.replace(vueFileRxp, '')
requireComponent.keys().forEach(fileName => {
const filePath = fileName.replace(/^\.\//, '')
let componentName = upperFirst(camelCase(fileName))
if (!filePath.split('/').every((path, index, arr) => {
const char = path.charAt(0)
return vueFileRxp.test(path) || char.toUpperCase() !== char || arr[index + 1] == 'index.vue'
})) return
// console.log(componentName)
const componentConfig = requireComponent(fileName)
app.component(componentName, module.default)
let componentName = upperFirst(camelCase(filePath.replace(/\.\w+$/, '')))
if (componentName.endsWith('Index')) componentName = componentName.replace(/Index$/, '')
app.component(componentName, componentConfig.default || componentConfig)
})
}
@@ -3,13 +3,12 @@ import { getDuration, getPlaybackRate, getCurrentTime } from '@renderer/plugins/
import { isPlay, musicInfo, playMusicInfo } from '@renderer/store/player/state'
import { playProgress } from '@renderer/store/player/playProgress'
import { pause, play, playNext, playPrev, stop } from '@renderer/core/player'
import silenceAudio from '@renderer/assets/medias/Silence02s.mp3'
export default () => {
// 创建一个空白音频以保持对 Media Session 的注册
const emptyAudio = new Audio()
emptyAudio.autoplay = false
emptyAudio.src = silenceAudio
emptyAudio.src = require('@renderer/assets/medias/Silence02s.mp3')
emptyAudio.controls = false
emptyAudio.preload = 'auto'
emptyAudio.onplaying = () => {
@@ -16,41 +16,40 @@ import {
import { appSetting } from '@renderer/store/setting'
const cache = new Map<string, AudioBuffer>()
const loadBuffer = async(name: string) => {
const path = (await import(`../../../assets/medias/filters/${name.replace('.wav', '')}.wav`)).default as string
return new Promise<AudioBuffer>((resolve, reject) => {
if (cache.has(path)) {
resolve(cache.get(path) as AudioBuffer)
return
}
// Load buffer asynchronously
let request = new XMLHttpRequest()
request.open('GET', path, true)
request.responseType = 'arraybuffer'
const loadBuffer = async(name: string) => new Promise<AudioBuffer>((resolve, reject) => {
// eslint-disable-next-line @typescript-eslint/no-var-requires
const path = require('@renderer/assets/medias/filters/' + name) as string
if (cache.has(path)) {
resolve(cache.get(path) as AudioBuffer)
return
}
// Load buffer asynchronously
let request = new XMLHttpRequest()
request.open('GET', path, true)
request.responseType = 'arraybuffer'
request.onload = function() {
// Asynchronously decode the audio file data in request.response
void getAudioContext().decodeAudioData(request.response, (buffer) => {
if (!buffer) {
reject(new Error('error decoding file data: ' + path))
return
}
cache.set(path, buffer)
resolve(buffer)
},
function(error) {
reject(error)
console.error('decodeAudioData error', error)
})
}
request.onload = function() {
// Asynchronously decode the audio file data in request.response
void getAudioContext().decodeAudioData(request.response, (buffer) => {
if (!buffer) {
reject(new Error('error decoding file data: ' + path))
return
}
cache.set(path, buffer)
resolve(buffer)
},
function(error) {
reject(error)
console.error('decodeAudioData error', error)
})
}
request.onerror = function() {
reject(new Error('XHR error'))
}
request.onerror = function() {
reject(new Error('XHR error'))
}
request.send()
})
}
request.send()
})
export default () => {
// console.log(appSetting['player.soundEffect.panner.enable'])
-1
View File
@@ -31,6 +31,5 @@
}
if (/theme=(.+)(#|$)/.test(window.location.search)) applyThemeColor(RegExp.$1)
</script>
<script type="module" src="/main.ts"></script>
</body>
</html>
-1
View File
@@ -1,5 +1,4 @@
import '@common/error'
import 'virtual:svg-icons-register'
import { createApp } from 'vue'
import './core/globalData'
+3 -3
View File
@@ -1,8 +1,8 @@
import SvgIcon from './SvgIcon.vue'
// const req = require.context('@renderer/assets/svgs', false, /\.svg$/)
// const requireAll = requireContext => requireContext.keys().map(requireContext)
// requireAll(req)
const req = require.context('@renderer/assets/svgs', false, /\.svg$/)
const requireAll = requireContext => requireContext.keys().map(requireContext)
requireAll(req)
export default app => {
app.component('svg-icon', SvgIcon)
+5 -3
View File
@@ -1,5 +1,3 @@
import PhaseVocoder from './pitch-shifter/phase-vocoder.js?worker&url'
let audio: HTMLAudioElement | null = null
let audioContext: AudioContext
let mediaSource: MediaElementAudioSourceNode
@@ -278,7 +276,11 @@ const loadPitchShifterNode = () => {
pitchShifterNodeLoadStatus = 'loading'
initAdvancedAudioFeatures()
// source -> analyser -> biquadFilter -> audioWorklet(pitch shifter) -> [(convolver & convolverSource)->convolverDynamicsCompressor] -> panner -> gain
void audioContext.audioWorklet.addModule(PhaseVocoder).then(() => {
void audioContext.audioWorklet.addModule(new URL(
/* webpackChunkName: 'pitch_shifter.audioWorklet' */
'./pitch-shifter/phase-vocoder.js',
import.meta.url,
)).then(() => {
console.log('pitch shifter audio worklet loaded')
// https://github.com/olvb/phaze/issues/26#issuecomment-1574629971
pitchShifterNode = new AudioWorkletNode(audioContext, 'phase-vocoder-processor', { outputChannelCount: [2] })
+7 -15
View File
@@ -2,14 +2,6 @@
// import Vue from 'vue'
import { createRouter, createWebHashHistory } from 'vue-router'
import SearchView from './views/Search/index.vue'
import SongListView from './views/songList/List/index.vue'
import SongListDetailView from './views/songList/Detail/index.vue'
import LeaderboardView from './views/Leaderboard/index.vue'
import ListView from './views/List/index.vue'
import DownloadView from './views/Download/index.vue'
import SettingView from './views/Setting/index.vue'
const router = createRouter({
history: createWebHashHistory(),
@@ -17,7 +9,7 @@ const router = createRouter({
{
path: '/search',
name: 'Search',
component: SearchView,
component: require('./views/Search/index.vue').default,
meta: {
name: 'Search',
},
@@ -25,7 +17,7 @@ const router = createRouter({
{
path: '/songList/list',
name: 'SongList',
component: SongListView,
component: require('./views/songList/List/index.vue').default,
meta: {
name: 'SongList',
},
@@ -33,7 +25,7 @@ const router = createRouter({
{
path: '/songList/detail',
name: 'SongListDetail',
component: SongListDetailView,
component: require('./views/songList/Detail/index.vue').default,
meta: {
name: 'SongList',
},
@@ -41,7 +33,7 @@ const router = createRouter({
{
path: '/leaderboard',
name: 'Leaderboard',
component: LeaderboardView,
component: require('./views/Leaderboard/index.vue').default,
meta: {
name: 'Leaderboard',
},
@@ -49,7 +41,7 @@ const router = createRouter({
{
path: '/list',
name: 'List',
component: ListView,
component: require('./views/List/index.vue').default,
meta: {
name: 'List',
},
@@ -57,7 +49,7 @@ const router = createRouter({
{
path: '/download',
name: 'Download',
component: DownloadView,
component: require('./views/Download/index.vue').default,
meta: {
name: 'Download',
},
@@ -65,7 +57,7 @@ const router = createRouter({
{
path: '/setting',
name: 'Setting',
component: SettingView,
component: require('./views/Setting/index.vue').default,
meta: {
name: 'Setting',
},
+3 -3
View File
@@ -1,10 +1,10 @@
import { ref, reactive, shallowRef, markRaw, computed, watch } from '@common/utils/vueTools'
import { windowSizeList as configWindowSizeList } from '@common/config'
import { appSetting } from './setting'
import { version } from '../../../package.json'
import pkg from '../../../package.json'
import { type ProgressInfo } from 'electron-updater'
import music from '@renderer/utils/musicSdk'
process.versions.app = version
process.versions.app = pkg.version
export const apiSource = ref<string | null>(null)
export const proxy: {
@@ -115,7 +115,7 @@ export const versionInfo = window.lxData.versionInfo = reactive<{
status: LX.UpdateStatus
downloadProgress: ProgressInfo | null
}>({
version,
version: pkg.version,
newVersion: null,
showModal: false,
reCheck: false,
-2
View File
@@ -1,2 +0,0 @@
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
/// <reference types="vite/client" />
@@ -33,7 +33,7 @@ dd
.gap-top
base-checkbox(id="setting_to_tray" :model-value="appSetting['tray.enable']" :label="$t('setting__basic_to_tray')" @update:model-value="updateSetting({'tray.enable': $event})")
.p.gap-top
base-btn.btn(min @click="isShowPlayTimeoutModal = true") {{ $t('setting__play_timeout')}} {{ timeLabel ? ` (${timeLabel})` : '' }}
base-btn.btn(min @click="isShowPlayTimeoutModal = true") {{ $t('setting__play_timeout')}} {{ timeLabel ? ` (${timeLabel})` : '' }}
dd
h3#basic_source {{ $t('setting__basic_source') }}
+10 -11
View File
@@ -3,9 +3,11 @@ import * as Comlink from 'comlink'
export type MainTypes = Comlink.Remote<LX.WorkerMainTypes>
export const createMainWorker = () => {
const worker: Worker = new Worker(new URL('../main', import.meta.url), {
type: 'module',
})
const worker: Worker = new Worker(new URL(
/* webpackChunkName: 'renderer.main.worker' */
'../main',
import.meta.url,
))
return Comlink.wrap<LX.WorkerMainTypes>(worker)
}
@@ -20,14 +22,11 @@ export const createMainWorker = () => {
export type DownloadTypes = Comlink.Remote<LX.WorkerDownloadTypes>
export const createDownloadWorker = () => {
const worker: Worker = new Worker(new URL('../download', import.meta.url), {
type: 'module',
})
// const worker: Worker = new Worker(new URL(
// /* webpackChunkName: 'renderer.download.worker' */
// '../download',
// import.meta.url,
// ))
const worker: Worker = new Worker(new URL(
/* webpackChunkName: 'renderer.download.worker' */
'../download',
import.meta.url,
))
return Comlink.wrap<LX.WorkerDownloadTypes>(worker)
}