Skip to content

Commit 4d44abd

Browse files
fix: serve mashlib for containers, not just resources
Containers were returning JSON-LD directly without checking if mashlib should be served. Now containers also check shouldServeMashlib() and return the HTML wrapper when Accept: text/html is requested.
1 parent c4ad52e commit 4d44abd

3 files changed

Lines changed: 24 additions & 3 deletions

File tree

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "javascript-solid-server",
3-
"version": "0.0.23",
3+
"version": "0.0.24",
44
"description": "A minimal, fast Solid server",
55
"main": "src/index.js",
66
"type": "module",

src/handlers/resource.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,27 @@ export async function handleGet(request, reply) {
125125
const entries = await storage.listContainer(storagePath);
126126
const jsonLd = generateContainerJsonLd(resourceUrl, entries || []);
127127

128+
// Check if we should serve Mashlib data browser for containers
129+
if (shouldServeMashlib(request, request.mashlibEnabled, 'application/ld+json')) {
130+
const cdnVersion = request.mashlibCdn ? request.mashlibVersion : null;
131+
const html = generateDatabrowserHtml(resourceUrl, cdnVersion);
132+
const headers = getAllHeaders({
133+
isContainer: true,
134+
etag: stats.etag,
135+
contentType: 'text/html',
136+
origin,
137+
resourceUrl,
138+
connegEnabled
139+
});
140+
headers['Vary'] = 'Accept';
141+
headers['X-Frame-Options'] = 'DENY';
142+
headers['Content-Security-Policy'] = "frame-ancestors 'none'";
143+
headers['Cache-Control'] = 'no-store';
144+
145+
Object.entries(headers).forEach(([k, v]) => reply.header(k, v));
146+
return reply.type('text/html').send(html);
147+
}
148+
128149
const headers = getAllHeaders({
129150
isContainer: true,
130151
etag: stats.etag,

0 commit comments

Comments
 (0)