* 所有的 CDN 依賴已全部 npm 化 * Webpack? 一邊去! Vite 太好用啦! * 將 Imports.ts 剔除 * 移除了大量的靜態文件 * 將 index.html 的部分代碼分離 * 修改 deno task * 移除了動態編譯頁面的支持 * ./static 引用全部變更為 npm 包引用
46 lines
1.0 KiB
TypeScript
46 lines
1.0 KiB
TypeScript
import * as CryptoES from 'crypto-es'
|
|
|
|
const dataIsEmpty = !localStorage.tws_data || localStorage.tws_data == ''
|
|
|
|
const aes = {
|
|
enc: (m: string, k: string) => CryptoES.AES.encrypt(m, k).toString(CryptoES.HexFormatter),
|
|
dec: (m: string, k: string) => CryptoES.AES.decrypt(m, k).toString(CryptoES.Utf8),
|
|
}
|
|
|
|
const key = location.host + '_TWS_姐姐'
|
|
|
|
if (dataIsEmpty) localStorage.tws_data = aes.enc('{}', key)
|
|
|
|
let _dec = aes.dec(localStorage.tws_data, key)
|
|
if (_dec == '') _dec = '{}'
|
|
|
|
const _data_cached = JSON.parse(_dec)
|
|
|
|
// 類型定義
|
|
declare global {
|
|
interface Window {
|
|
data: {
|
|
apply: () => void
|
|
access_token?: string
|
|
}
|
|
}
|
|
}
|
|
|
|
// deno-lint-ignore no-window
|
|
(window.data == null) && (window.data = new Proxy({
|
|
apply() {
|
|
localStorage.tws_data = aes.enc(JSON.stringify(_data_cached), key)
|
|
}
|
|
}, {
|
|
get(_obj, k) {
|
|
return _data_cached[k]
|
|
},
|
|
set(_obj, k, v) {
|
|
_data_cached[k] = v
|
|
return true
|
|
},
|
|
}))
|
|
|
|
// deno-lint-ignore no-window
|
|
export default window.data
|