mirror of
https://github.com/BewlyBewly/BewlyBewly.git
synced 2025-04-14 13:15:29 +00:00
* Add support of Safari 1. Workaround of Safari's bug of not sending cookies when using fetch in background service worker. This fixes https://github.com/hakadao/BewlyBewly/issues/275#issuecomment-1927278492. See: https://stackoverflow.com/questions/78239213/safari-extension-service-worker-not-sending-cookie 2. Add scripts to for Safari specific build and convert it to a Safari web extension. * Fixed a bug in Safari that when the extension was installed, the page would turn into a white screen * Safari may fire DOMContentLoaded before the codes get called * Remove false fix; Ignore extension-safari * Reduce memory and power usage with a nonpersistent background page on Safari and Firefox, see https://developer.apple.com/documentation/safariservices/safari_web_extensions/optimizing_your_web_extension_for_safari#3743241 and https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Background_scripts * Build and release Safari extension with Github actions (#585) * feat: add safari extension build * fix: safari pathname * fix: add build branch * Merge * Try building Safari extension using GitHub action Correct versions Debug Minor bug fixed Minor bug fixed Add scripts to release Minor bug fixed Minor bug fixed Minor bug fixed --------- Co-authored-by: 梦念逍遥 <2589141604@qq.com> Co-authored-by: Xiaolin Wang <exgphe@gmail.com> Co-authored-by: Hakadao <a578457889743@gmail.com> * fix: safari build (#665) * chore: update * chore: update knip.json to ignore "xcrun" binaries --------- Co-authored-by: Xiaolin Wang <exgphe@gmail.com> Co-authored-by: exgphe <14009450+exgphe@users.noreply.github.com> Co-authored-by: 梦念逍遥 <2589141604@qq.com>
56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
// generate stub index.html files for dev entry
|
|
import { execSync } from 'node:child_process'
|
|
|
|
import chokidar from 'chokidar'
|
|
import fs from 'fs-extra'
|
|
|
|
import { isDev, isFirefox, isSafari, log, r } from './utils'
|
|
|
|
/**
|
|
* Stub index.html to use Vite in development
|
|
*/
|
|
async function stubIndexHtml() {
|
|
const views = [
|
|
'options',
|
|
'popup',
|
|
]
|
|
|
|
for (const view of views) {
|
|
await fs.ensureDir(r(
|
|
isFirefox
|
|
? `extension-firefox/dist/${view}`
|
|
: isSafari ? `extension-safari/dist/${view}` : `extension/dist/${view}`,
|
|
))
|
|
let data = await fs.readFile(r(`src/${view}/index.html`), 'utf-8')
|
|
data = data
|
|
.replace('"./main.ts"', `"/${view}/main.ts.js"`)
|
|
.replace('<div id="app"></div>', '<div id="app">Vite server did not start</div>')
|
|
await fs.writeFile(r(
|
|
isFirefox
|
|
? `extension-firefox/dist/${view}/index.html`
|
|
: isSafari ? `extension-safari/dist/${view}/index.html` : `extension/dist/${view}/index.html`,
|
|
), data, 'utf-8')
|
|
log('PRE', `stub ${view}`)
|
|
}
|
|
}
|
|
|
|
function writeManifest() {
|
|
execSync('npx esno ./scripts/manifest.ts', { stdio: 'inherit' })
|
|
}
|
|
|
|
fs.ensureDirSync(r(isFirefox ? 'extension-firefox' : isSafari ? 'extension-safari' : 'extension'))
|
|
fs.copySync(r('assets'), r(isFirefox ? 'extension-firefox/assets' : isSafari ? 'extension-safari/assets' : 'extension/assets'))
|
|
writeManifest()
|
|
|
|
if (isDev) {
|
|
stubIndexHtml()
|
|
chokidar.watch(r('src/**/*.html'))
|
|
.on('change', () => {
|
|
stubIndexHtml()
|
|
})
|
|
chokidar.watch([r('src/manifest.ts'), r('package.json')])
|
|
.on('change', () => {
|
|
writeManifest()
|
|
})
|
|
}
|