update targets
All checks were successful
/ checkpr (pull_request) Successful in 1m22s

* browserlist file is removed
This commit is contained in:
thislight 2025-01-04 17:51:19 +08:00
parent e617f344f8
commit 937efe1107
No known key found for this signature in database
GPG key ID: FCFE5192241CCD4E
4 changed files with 18 additions and 30 deletions

View file

@ -1 +0,0 @@
>0.3% and not dead, firefox>=98, safari>=15.4, chrome>=84

View file

@ -8,17 +8,17 @@ Tutu is a comfortable experience for tooting. Designed to work on any device - d
The code is built against those targets and Tutu must run on those platforms:
| Firefox | Safari | iOS | Chrome | Edge |
| ------- | ------ | ----- | ------ | ---- |
| 98 | 15.4 | 15.4 | 84 | 87 |
| Firefox | Safari | iOS | Chrome & Edge |
| ------- | ------ | ----- | ------------- |
| 115 | 15.6 | 15.6 | 108 |
Tutu trys to push the Web technology to its limit. Some features might not be available on the platform does not meet the requirement.
## The "Next" Branch
## The "Nightly" Branch
The "next" branch of the app is built on every commit pushed into "master". You can tatse latest change but risks your data.
Tutu built on the latest code, called the nightly version. You can tatse latest change but risks your data.
[Launch Tutu (Next)](https://master.tututheapp.pages.dev)
[Launch Tutu (Nightly)](https://master.tututheapp.pages.dev)
## Build & Depoly

View file

@ -1,38 +1,27 @@
//! This module has side effect.
//! It recommended to include the module by <script> tag.
if (typeof window.crypto.randomUUID === "undefined") {
// TODO: this polyfill can be removed in 2.0, see https://code.lightstands.xyz/Rubicon/tutu/issues/36
// Chrome/Edge 92+
// https://stackoverflow.com/a/2117523/2800218
// LICENSE: https://creativecommons.org/licenses/by-sa/4.0/legalcode
window.crypto.randomUUID =
function randomUUID(): `${string}-${string}-${string}-${string}-${string}` {
return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (c) =>
(
+c ^
(crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (+c / 4)))
).toString(16),
) as `${string}-${string}-${string}-${string}-${string}`;
};
}
if (typeof Promise.withResolvers === "undefined") {
// Chrome/Edge 119, Firefox 121, Safari/iOS 17.4
// Promise.withResolvers is generic and works with subclasses - the typescript built-in decl
// could not handle the subclassing case.
(Promise.prototype as any).withResolvers = function <T>(this: AnyPromiseConstructor<T>) {
let resolve!: PromiseWithResolvers<T>["resolve"], reject!: PromiseWithResolvers<T>["reject"];
(Promise.prototype as any).withResolvers = function <T>(
this: AnyPromiseConstructor<T>,
) {
let resolve!: PromiseWithResolvers<T>["resolve"],
reject!: PromiseWithResolvers<T>["reject"];
// These variables are expected to be set after `new this()`
const promise = new this((resolve0, reject0) => {
resolve = resolve0;
reject = reject0;
})
});
return {
promise, resolve, reject
}
}
promise,
resolve,
reject,
};
};
}

View file

@ -147,7 +147,7 @@ export default defineConfig(({ mode }) => {
devSourcemap: true,
},
build: {
target: ["firefox98", "safari15.4", "ios15.4", "chrome84", "edge87"],
target: ["firefox115", "safari15.6", "ios15.6", "chrome108", "edge108"],
sourcemap: true,
rollupOptions: {
output: {