Skip to content

Commit 76e31b2

Browse files
committed
update
1 parent 12ae3d3 commit 76e31b2

File tree

3 files changed

+122
-14
lines changed

3 files changed

+122
-14
lines changed

apps/bplan-client/src/routes/(main-layout)/preset/[id].tsx

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1-
import {createAsync, query, useParams} from '@solidjs/router'
2-
// import {createResource} from 'solid-js'
1+
import {createResource} from 'solid-js'
2+
import {MusicInfo} from 'src/components/midi-player'
33
import {default as HomePage} from 'src/routes/(main-layout)/(home)'
44

55
const getSelfUrl = () => {
66
return import.meta.env.VITE_API_URL ?? 'http://localhost:3000'
77
}
88

9-
const getPreset = query(async (id?: string) => {
10-
'use server'
9+
interface Data {
10+
musics: MusicInfo[]
11+
title: string
12+
}
13+
const getPreset = async (id?: string): Promise<Data | undefined> => {
14+
// 'use server'
1115

1216
if (!id) {
1317
return
@@ -20,11 +24,14 @@ const getPreset = query(async (id?: string) => {
2024

2125
return {musics: [], title: 'Unknown'}
2226
})
23-
}, 'preset')
27+
}
2428

2529
export default function PresetPage() {
26-
const params = useParams()
27-
const preset = createAsync(() => getPreset(params.id))
30+
// const params = useParams()
31+
// solidjs/router query send empty page time to time
32+
// do not use createAsync because it create a template and it does not work
33+
// createResource also make the template and it does not work
34+
const [preset] = createResource(() => getPreset())
2835
// const preset = () => ({musics: [], title: 'Unknown'})
2936

3037
return <HomePage presetTitle={preset()?.title} initMusics={preset()?.musics} />
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
// vite.config.mts
2+
import { defineConfig } from "@solidjs/start/config";
3+
import { fileURLToPath, URL } from "node:url";
4+
import * as path from "node:path";
5+
import { generateSW } from "@winter-love/sw";
6+
import unoCss from "unocss/vite";
7+
import * as nodeFs from "node:fs";
8+
import legacy from "@vitejs/plugin-legacy";
9+
import { targets } from "@winter-love/vite-lib-config";
10+
var fixNitroFunction = async () => {
11+
const source = process.env.VERCEL === "1" ? path.resolve(".vercel/output/functions/__nitro.func/chunks/nitro/nitro.mjs") : path.resolve(".output/server/chunks/nitro/nitro.mjs");
12+
const scriptJs = await nodeFs.promises.readFile(source, "utf8");
13+
await nodeFs.promises.writeFile(
14+
source,
15+
scriptJs.replace(
16+
`
17+
function getDefaultExportFromNamespaceIfNotNamed (n) {
18+
return n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;
19+
}`,
20+
`
21+
// hot fixed
22+
function getDefaultExportFromNamespaceIfNotNamed (n) {
23+
return n && Object.prototype.hasOwnProperty.call(n, 'default') && (Object.keys(n).length === 1 || (Object.prototype.hasOwnProperty.call(n, '__esModule') && Object.keys(n).length === 2) ) ? n['default'] : n;
24+
}`
25+
),
26+
"utf8"
27+
);
28+
};
29+
var fixSw = async () => {
30+
return nodeFs.promises.rm(path.resolve("public/sw.js"));
31+
};
32+
var hotfix = async () => {
33+
await fixNitroFunction();
34+
await fixSw();
35+
};
36+
var createGenerateSwPlugin = () => {
37+
let _config;
38+
return {
39+
async closeBundle() {
40+
if (!_config) {
41+
return;
42+
}
43+
const { outDir, root } = _config.router;
44+
const swOutPath = path.join(root, "public/sw.js");
45+
await generateSW(swOutPath, {
46+
assets: "_build/assets/**/*",
47+
assetsRoot: outDir,
48+
cwd: ""
49+
});
50+
},
51+
configResolved(config) {
52+
if (config.router.type === "client" && config.mode === "production") {
53+
_config = config;
54+
}
55+
},
56+
name: "generate-sw"
57+
};
58+
};
59+
var vite_config_default = defineConfig({
60+
server: {
61+
hooks: {
62+
close: () => {
63+
return hotfix();
64+
}
65+
}
66+
},
67+
vite: {
68+
// build: {
69+
// minify: false,
70+
// },
71+
plugins: [
72+
//
73+
unoCss("../../uno.config.ts"),
74+
createGenerateSwPlugin(),
75+
legacy({
76+
targets
77+
})
78+
],
79+
resolve: {
80+
alias: {
81+
// fix #start/app is app.tsx only @solid/state error
82+
"#start/app": fileURLToPath(new URL("src/App.tsx", import.meta.url)),
83+
// fix @tonejs/midi is not module js
84+
"@tonejs/midi": fileURLToPath(
85+
new URL("node_modules/@tonejs/midi/src/Midi.ts", import.meta.url)
86+
),
87+
src: fileURLToPath(new URL("src", import.meta.url))
88+
}
89+
}
90+
}
91+
});
92+
export {
93+
vite_config_default as default
94+
};

packages/sw/src/sw.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,12 @@ const isOriginPath = (url: string) =>
1414

1515
const isApiPath = (url: string) => url.startsWith(apiPath)
1616

17-
const createNetworkFirst = async (event: FetchEvent) => {
17+
const createNetworkFirst = async (event: FetchEvent, cache: RequestCache = 'default') => {
18+
const headers = new Headers()
19+
headers.append('cache-control', cache)
20+
headers.append('pragma', cache)
1821
try {
19-
const response = await fetch(event.request)
22+
const response = await fetch(event.request, {headers})
2023
const cache = await caches.open(CACHE_NAME)
2124
await cache.put(event.request, response.clone())
2225

@@ -90,12 +93,16 @@ self.addEventListener('fetch', (event: FetchEvent) => {
9093
return
9194
}
9295

96+
const destination: RequestDestination[] = [
97+
'style',
98+
'script',
99+
'worker',
100+
'manifest',
101+
'document',
102+
]
103+
93104
// Use network request for document navigation, otherwise use cache request
94-
if (
95-
['document', 'style', 'script', 'worker', 'manifest'].includes(
96-
event.request.destination,
97-
)
98-
) {
105+
if (destination.includes(event.request.destination)) {
99106
event.respondWith(createNetworkFirst(event))
100107

101108
return

0 commit comments

Comments
 (0)