-
Notifications
You must be signed in to change notification settings - Fork 3
/
frugal.config.ts
110 lines (99 loc) · 3.52 KB
/
frugal.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import { page, UpstashPersistance } from './dep/frugal/core.ts';
import { Config } from './dep/frugal/frugal_oak.ts';
import { ScriptLoader } from './dep/frugal/loader_script.ts';
import { StyleLoader, styleTransformer } from './dep/frugal/loader_style.ts';
import * as stylis from './dep/stylis.ts';
import { svg, svgTransformer } from './dep/frugal/loader_jsx_svg.ts';
import * as preact from 'preact';
import * as home from './pages/home/mod.ts';
import * as docs from './pages/docs/mod.ts';
import * as example from './pages/example/mod.ts';
const self = new URL(import.meta.url);
export const config: Config = {
self,
outputDir: './dist',
importMap: '../import_map.json',
loaders: [
new ScriptLoader({
bundles: [{
name: 'body',
test: IS_SCRIPT_FILE,
}],
transformers: [{
test: IS_STYLE_FILE,
transform: styleTransformer,
}, {
test: IS_SVG,
transform: svgTransformer,
}],
format: 'esm',
minify: false,
splitting: true,
sourcemap: true,
}),
new StyleLoader({
test: IS_STYLE_FILE,
transform: (bundle) => {
return stylis.serialize(
stylis.compile(bundle),
stylis.middleware([stylis.prefixer, stylis.stringify]),
);
},
}),
svg({
test: IS_SVG,
jsx: preact.h,
}),
],
pages: [
page(home),
page(docs),
page(example),
],
sessionPersistance: new UpstashPersistance(
Deno.env.get('UPSTASH_URL') ?? '',
Deno.env.get('UPSTASH_TOKEN') ?? '',
),
logging: {
type: 'human',
loggers: {
'frugal:asset': 'DEBUG',
'frugal:Builder': 'DEBUG',
'frugal:Cache': 'DEBUG',
'frugal:Frugal': 'DEBUG',
'frugal:FrugalContext': 'DEBUG',
'frugal:Generator': 'DEBUG',
'frugal:LoaderContext': 'DEBUG',
'frugal:PageBuilder': 'DEBUG',
'frugal:PageGenerator': 'DEBUG',
'frugal:PageRefresher': 'DEBUG',
'frugal:Refresher': 'DEBUG',
'frugal:dependency_graph': 'DEBUG',
'frugal:loader:jsx_svg': 'DEBUG',
'frugal:loader:script': 'DEBUG',
'frugal:loader:style': 'DEBUG',
'frugal_oak:DynamicRouter': 'DEBUG',
'frugal_oak:DynamicRouter:generateMiddleware': 'DEBUG',
'frugal_oak:PrgOrchestrator': 'DEBUG',
'frugal_oak:PrgOrchestrator:postMiddleware': 'DEBUG',
'frugal_oak:PrgOrchestrator:getRedirectionMiddleware': 'DEBUG',
'frugal_oak:staticFileMiddleware': 'DEBUG',
'frugal_oak:staticFileMiddleware:filesystemMiddleware': 'DEBUG',
'frugal_oak:staticFileMiddleware:autoIndexMiddleware': 'DEBUG',
'frugal_oak:StaticRouter': 'DEBUG',
'frugal_oak:StaticRouter:forceRefreshMiddleware': 'DEBUG',
'frugal_oak:StaticRouter:cachedMiddleware': 'DEBUG',
'frugal_oak:StaticRouter:refreshJitMiddleware': 'DEBUG',
},
},
listen: { port: 8000 },
};
function IS_STYLE_FILE(url: URL | string) {
return /\.style\.ts$/.test(url.toString());
}
function IS_SCRIPT_FILE(url: URL | string) {
return /\.script\.ts$/.test(url.toString());
}
function IS_SVG(url: URL | string) {
return /\.svg\.[tj]sx?$/.test(url.toString());
}