Skip to content
This repository was archived by the owner on Jul 6, 2025. It is now read-only.

Commit dd2d1b8

Browse files
author
X
authored
refactor: restore html.ts
1 parent c662de1 commit dd2d1b8

File tree

1 file changed

+38
-59
lines changed

1 file changed

+38
-59
lines changed

html.ts

Lines changed: 38 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,65 @@
1-
import util from "./util.ts";
1+
import util from './util.ts'
22

33
export function createHtml({
4-
lang = "en",
4+
lang = 'en',
55
head = [],
66
scripts = [],
77
body,
8-
minify = false,
8+
minify = false
99
}: {
10-
lang?: string;
11-
head?: string[];
12-
scripts?:
13-
(string | {
14-
id?: string;
15-
type?: string;
16-
src?: string;
17-
innerText?: string;
18-
nomodule?: boolean;
19-
async?: boolean;
20-
preload?: boolean;
21-
})[];
22-
body: string;
23-
minify?: boolean;
10+
lang?: string,
11+
head?: string[],
12+
scripts?: (string | { id?: string, type?: string, src?: string, innerText?: string, nomodule?: boolean, async?: boolean, preload?: boolean })[],
13+
body: string,
14+
minify?: boolean
2415
}) {
25-
const eol = minify ? "" : "\n";
26-
const indent = minify ? "" : " ".repeat(4);
27-
const headTags = head.map((tag) => tag.trim())
28-
.concat(scripts.map((v) => {
16+
const eol = minify ? '' : '\n'
17+
const indent = minify ? '' : ' '.repeat(4)
18+
const headTags = head.map(tag => tag.trim())
19+
.concat(scripts.map(v => {
2920
if (!util.isString(v) && util.isNEString(v.src)) {
30-
if (v.type === "module") {
31-
return `<link rel="modulepreload" href=${JSON.stringify(v.src)} />`;
21+
if (v.type === 'module') {
22+
return `<link rel="modulepreload" href=${JSON.stringify(v.src)} />`
23+
} else if (v.async === true) {
24+
return `<link rel="preload" href=${JSON.stringify(v.src)} as="script" />`
3225
}
33-
return `<link rel="preload" href=${JSON.stringify(v.src)
34-
} as="script" />`;
3526
}
36-
return "";
37-
}))
38-
/*.concat(
39-
[
40-
"/_aleph/-/deno.land/x/aleph/error.js",
41-
"/_aleph/-/deno.land/x/aleph/aleph.js",
42-
"/_aleph/-/deno.land/x/aleph/context.js",
43-
"/_aleph/-/deno.land/x/aleph/events.js"
44-
].map((v) =>
45-
`<link rel="modulepreload" href=${JSON.stringify(v)} as="script" />`
46-
),
47-
)*/
48-
.filter(Boolean);
49-
const scriptTags = scripts.map((v) => {
27+
return ''
28+
})).filter(Boolean)
29+
const scriptTags = scripts.map(v => {
5030
if (util.isString(v)) {
51-
return `<script>${v}</script>`;
31+
return `<script>${v}</script>`
5232
} else if (util.isNEString(v.innerText)) {
53-
const { innerText, ...rest } = v;
54-
return `<script${attrString(rest)
55-
}>${eol}${innerText}${eol}${indent}</script>`;
33+
const { innerText, ...rest } = v
34+
return `<script${attrString(rest)}>${eol}${innerText}${eol}${indent}</script>`
5635
} else if (util.isNEString(v.src) && !v.preload) {
57-
return `<script${attrString(v)}></script>`;
36+
return `<script${attrString(v)}></script>`
5837
} else {
59-
return "";
38+
return ''
6039
}
61-
}).filter(Boolean);
40+
}).filter(Boolean)
6241

6342
return [
64-
"<!DOCTYPE html>",
43+
'<!DOCTYPE html>',
6544
`<html lang="${lang}">`,
66-
"<head>",
45+
'<head>',
6746
indent + '<meta charSet="utf-8" />',
68-
...headTags.map((tag) => indent + tag),
69-
"</head>",
70-
"<body>",
47+
...headTags.map(tag => indent + tag),
48+
'</head>',
49+
'<body>',
7150
indent + body,
72-
...scriptTags.map((tag) => indent + tag),
73-
"</body>",
74-
"</html>",
75-
].join(eol);
51+
...scriptTags.map(tag => indent + tag),
52+
'</body>',
53+
'</html>'
54+
].join(eol)
7655
}
7756

7857
function attrString(v: any): string {
79-
return Object.keys(v).map((k) => {
58+
return Object.keys(v).map(k => {
8059
if (v[k] === true) {
81-
return ` ${k}`;
60+
return ` ${k}`
8261
} else {
83-
return ` ${k}=${JSON.stringify(String(v[k]))}`;
62+
return ` ${k}=${JSON.stringify(String(v[k]))}`
8463
}
85-
}).join("");
64+
}).join('')
8665
}

0 commit comments

Comments
 (0)