mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-19 17:38:19 +08:00
ui: polyfill queueMicrotask
This commit is contained in:
1 parent
8497f40927
commit
c6485c536e
7 files changed
+37
-15
No files matched your search
@@ -83,6 +83,7 @@ export default function (env = {}) {
|
|||||||
context: root(),
|
context: root(),
|
||||||
entry: {
|
entry: {
|
||||||
hydro: './entry.js',
|
hydro: './entry.js',
|
||||||
|
polyfill: './polyfill.ts',
|
||||||
'default.theme': './theme/default.js',
|
'default.theme': './theme/default.js',
|
||||||
},
|
},
|
||||||
output: {
|
output: {
|
||||||
|
|||||||
@@ -1,11 +1,7 @@
|
|||||||
const esbuild = require('esbuild');
|
const esbuild = require('esbuild');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
||||||
let transformTimeUsage = 0;
|
|
||||||
let transformCount = 0;
|
|
||||||
let displayTimeout;
|
|
||||||
function transform(filename) {
|
function transform(filename) {
|
||||||
const start = new Date();
|
|
||||||
const result = esbuild.buildSync({
|
const result = esbuild.buildSync({
|
||||||
entryPoints: [filename],
|
entryPoints: [filename],
|
||||||
sourcemap: 'inline',
|
sourcemap: 'inline',
|
||||||
@@ -16,10 +12,6 @@ function transform(filename) {
|
|||||||
write: false,
|
write: false,
|
||||||
});
|
});
|
||||||
if (result.warnings.length) console.warn(result.warnings);
|
if (result.warnings.length) console.warn(result.warnings);
|
||||||
transformTimeUsage += new Date().getTime() - start.getTime();
|
|
||||||
transformCount++;
|
|
||||||
if (displayTimeout) clearTimeout(displayTimeout);
|
|
||||||
displayTimeout = setTimeout(() => console.log(`Transformed ${transformCount} files. (${transformTimeUsage}ms)`), 1000);
|
|
||||||
return result.outputFiles[0].text;
|
return result.outputFiles[0].text;
|
||||||
}
|
}
|
||||||
require.extensions['.js'] = function loader(module, filename) {
|
require.extensions['.js'] = function loader(module, filename) {
|
||||||
@@ -32,6 +24,6 @@ require.extensions['.js'] = function loader(module, filename) {
|
|||||||
require.extensions['.ts'] = function loader(module, filename) {
|
require.extensions['.ts'] = function loader(module, filename) {
|
||||||
return module._compile(transform(filename), filename);
|
return module._compile(transform(filename), filename);
|
||||||
};
|
};
|
||||||
const main = require('./main.js');
|
const main = require('./main');
|
||||||
|
|
||||||
if (!module.parent) main();
|
if (!module.parent) main();
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
/* eslint-disable import/no-import-module-exports */
|
||||||
/* eslint-disable import/no-extraneous-dependencies */
|
/* eslint-disable import/no-extraneous-dependencies */
|
||||||
import cac from 'cac';
|
import cac from 'cac';
|
||||||
import fs from 'fs-extra';
|
import fs from 'fs-extra';
|
||||||
@@ -90,6 +91,9 @@ async function main() {
|
|||||||
if (fs.existsSync('public/hydro.js')) {
|
if (fs.existsSync('public/hydro.js')) {
|
||||||
fs.copyFileSync('public/hydro.js', `public/hydro-${pkg.version}.js`);
|
fs.copyFileSync('public/hydro.js', `public/hydro-${pkg.version}.js`);
|
||||||
}
|
}
|
||||||
|
if (fs.existsSync('public/polyfill.js')) {
|
||||||
|
fs.copyFileSync('public/polyfill.js', `public/polyfill-${pkg.version}.js`);
|
||||||
|
}
|
||||||
if (fs.existsSync('public/default.theme.css')) {
|
if (fs.existsSync('public/default.theme.css')) {
|
||||||
fs.copyFileSync('public/default.theme.css', `public/default-${pkg.version}.theme.css`);
|
fs.copyFileSync('public/default.theme.css', `public/default-${pkg.version}.theme.css`);
|
||||||
}
|
}
|
||||||
@@ -44,10 +44,14 @@ export async function load(features = ['markdown']) {
|
|||||||
}
|
}
|
||||||
s = Date.now();
|
s = Date.now();
|
||||||
console.log('Loading monaco feature:', feat);
|
console.log('Loading monaco feature:', feat);
|
||||||
if (loaders[feat]) await loaders[feat]();
|
try {
|
||||||
else await loaders.external(res.default, feat);
|
if (loaders[feat]) await loaders[feat]();
|
||||||
console.log('Loaded monaco feature:', feat, 'in', Date.now() - s, 'ms');
|
else await loaders.external(res.default, feat);
|
||||||
loaded.push(feat);
|
console.log('Loaded monaco feature:', feat, 'in', Date.now() - s, 'ms');
|
||||||
|
loaded.push(feat);
|
||||||
|
} catch (e) {
|
||||||
|
console.log('Monaco feat', feat, 'failed to load:', e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
await res.loadThemePromise;
|
await res.loadThemePromise;
|
||||||
return { monaco: res.default, registerAction: res.registerAction };
|
return { monaco: res.default, registerAction: res.registerAction };
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@hydrooj/ui-default",
|
"name": "@hydrooj/ui-default",
|
||||||
"version": "4.34.3",
|
"version": "4.34.4",
|
||||||
"author": "undefined <i@undefined.moe>",
|
"author": "undefined <i@undefined.moe>",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"main": "hydro.js",
|
"main": "hydro.js",
|
||||||
@@ -72,6 +72,7 @@
|
|||||||
"prismjs": "^1.27.0",
|
"prismjs": "^1.27.0",
|
||||||
"prop-types": "^15.8.1",
|
"prop-types": "^15.8.1",
|
||||||
"qrcode": "^1.5.0",
|
"qrcode": "^1.5.0",
|
||||||
|
"queue-microtask": "^1.2.3",
|
||||||
"raw-loader": "^4.0.2",
|
"raw-loader": "^4.0.2",
|
||||||
"react": "^17.0.2",
|
"react": "^17.0.2",
|
||||||
"react-dom": "^17.0.2",
|
"react-dom": "^17.0.2",
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import queueMicrotask from 'queue-microtask';
|
||||||
|
import browserUpdate from 'browser-update';
|
||||||
|
|
||||||
|
window.queueMicrotask = queueMicrotask;
|
||||||
|
browserUpdate({
|
||||||
|
required: {
|
||||||
|
e: -10, f: -10, o: -3, s: -1, c: -10,
|
||||||
|
},
|
||||||
|
insecure: true,
|
||||||
|
api: 2022.03,
|
||||||
|
});
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
{% import "components/noscript_note.html" as noscript_note with context %}
|
{% import "components/noscript_note.html" as noscript_note with context %}
|
||||||
{% import "components/user.html" as user with context %}
|
{% import "components/user.html" as user with context %}
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html data-page="{{ page_name }}" data-layout="{{ layout_name }}" class="layout--{{ layout_name }} page--{{ page_name }} nojs" lang="{{ handler.viewLang }}">
|
<html data-page="{{ page_name }}" data-layout="{{ layout_name }}" class="layout--{{ layout_name }} page--{{ page_name }} nojs" lang="{{ handler.viewLang }}" data-app="Hydro">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||||
@@ -29,6 +29,7 @@
|
|||||||
body {
|
body {
|
||||||
--font-family: "{{ UserContext.fontFamily }}", "Open Sans", "Seravek", "Segoe UI", "Verdana", "PingFang SC", "Hiragino Sans GB", "Lantinghei SC", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans";
|
--font-family: "{{ UserContext.fontFamily }}", "Open Sans", "Seravek", "Segoe UI", "Verdana", "PingFang SC", "Hiragino Sans GB", "Lantinghei SC", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans";
|
||||||
--code-font-family: "{{ UserContext.codeFontFamily }}", "monaco", "Source Code Pro", "Consolas", "Lucida Console", "monospace";
|
--code-font-family: "{{ UserContext.codeFontFamily }}", "monaco", "Source Code Pro", "Consolas", "Lucida Console", "monospace";
|
||||||
|
--font-ligatures: {{ "normal" if UserContext.codeFontLigatures else "none" }} !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
{% if process.env.DEV %}
|
{% if process.env.DEV %}
|
||||||
@@ -40,6 +41,14 @@
|
|||||||
<script>
|
<script>
|
||||||
var _htmlNode = document.documentElement;
|
var _htmlNode = document.documentElement;
|
||||||
_htmlNode.className = _htmlNode.className.replace(' nojs', ' hasjs');
|
_htmlNode.className = _htmlNode.className.replace(' nojs', ' hasjs');
|
||||||
|
try {
|
||||||
|
import('data:text/javascript,');Object.fromEntries([])
|
||||||
|
} catch(e) {
|
||||||
|
const s = document.createElement('script');
|
||||||
|
s.async = false;
|
||||||
|
s.src = "{{ '/polyfill.js' if process.env.DEV else static_url(global.Hydro.version['ui-default'] + '.polyfill.js') }}";
|
||||||
|
document.head.appendChild(s);
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
Reference in new issue
Block a user