thebird 1.2.58 → 1.2.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/index.html +1 -1
- package/docs/preview-sw.js +8 -4
- package/package.json +1 -1
package/docs/index.html
CHANGED
|
@@ -36,7 +36,7 @@ bird-chat { display: flex; flex-direction: column; height: 100%; }
|
|
|
36
36
|
<button class="btn btn-xs btn-ghost" onclick="document.getElementById('preview-frame').src='preview/'">↺ Reload</button>
|
|
37
37
|
<span class="text-xs text-base-content/50 self-center">preview/</span>
|
|
38
38
|
</div>
|
|
39
|
-
<iframe id="preview-frame" class="w-full flex-1 border-0" src="about:blank"></iframe>
|
|
39
|
+
<iframe id="preview-frame" class="w-full flex-1 border-0" src="about:blank" credentialless></iframe>
|
|
40
40
|
</div>
|
|
41
41
|
</div>
|
|
42
42
|
<script>
|
package/docs/preview-sw.js
CHANGED
|
@@ -40,18 +40,22 @@ self.addEventListener('fetch', e => {
|
|
|
40
40
|
e.respondWith(handlePreview(key, e.request));
|
|
41
41
|
});
|
|
42
42
|
|
|
43
|
+
const CORS_HEADERS = {
|
|
44
|
+
'Cross-Origin-Resource-Policy': 'cross-origin',
|
|
45
|
+
};
|
|
46
|
+
|
|
43
47
|
async function handlePreview(key, request) {
|
|
44
48
|
const db = await openIDB();
|
|
45
49
|
const fs = await getFS(db);
|
|
46
|
-
if (key in fs) return new Response(fs[key], { status: 200, headers: { 'Content-Type': getMime(key) } });
|
|
50
|
+
if (key in fs) return new Response(fs[key], { status: 200, headers: { ...CORS_HEADERS, 'Content-Type': getMime(key) } });
|
|
47
51
|
const clients = await self.clients.matchAll({ type: 'window', includeUncontrolled: true });
|
|
48
|
-
if (!clients.length) return new Response('not found: ' + key, { status: 404 });
|
|
52
|
+
if (!clients.length) return new Response('not found: ' + key, { status: 404, headers: CORS_HEADERS });
|
|
49
53
|
const { port1, port2 } = new MessageChannel();
|
|
50
54
|
const result = await new Promise((res, rej) => {
|
|
51
55
|
const t = setTimeout(() => rej(new Error('express timeout')), 5000);
|
|
52
56
|
port1.onmessage = e => { clearTimeout(t); res(e.data); };
|
|
53
57
|
clients[0].postMessage({ type: 'EXPRESS_REQUEST', path: '/' + key, method: request.method }, [port2]);
|
|
54
58
|
});
|
|
55
|
-
if (!result || result.status === 404) return new Response('not found: ' + key, { status: 404 });
|
|
56
|
-
return new Response(result.body, { status: result.status || 200, headers: { 'Content-Type': result.contentType || 'text/html' } });
|
|
59
|
+
if (!result || result.status === 404) return new Response('not found: ' + key, { status: 404, headers: CORS_HEADERS });
|
|
60
|
+
return new Response(result.body, { status: result.status || 200, headers: { ...CORS_HEADERS, 'Content-Type': result.contentType || 'text/html' } });
|
|
57
61
|
}
|
package/package.json
CHANGED