@aphexcms/cms-core 6.0.0 → 7.0.0
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets-cdn.d.ts","sourceRoot":"","sources":["../../../src/lib/routes/assets-cdn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,eAAO,MAAM,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"assets-cdn.d.ts","sourceRoot":"","sources":["../../../src/lib/routes/assets-cdn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,eAAO,MAAM,GAAG,EAAE,cAkKjB,CAAC"}
|
|
@@ -103,12 +103,25 @@ export const GET = async ({ params, locals, setHeaders, request }) => {
|
|
|
103
103
|
return new Response('Storage adapter does not support file serving', { status: 500 });
|
|
104
104
|
}
|
|
105
105
|
const fileBuffer = await storageAdapter.getObject(asset.path);
|
|
106
|
+
// RFC 6266 Content-Disposition: dual-encode the filename so it survives
|
|
107
|
+
// non-ASCII characters in HTTP headers. HTTP headers are ByteString-
|
|
108
|
+
// restricted (codepoints 0–255), so a raw character like U+202F NARROW
|
|
109
|
+
// NO-BREAK SPACE — which macOS inserts before AM/PM in default
|
|
110
|
+
// screenshot filenames — would otherwise crash the Response
|
|
111
|
+
// constructor. We provide:
|
|
112
|
+
// filename="..." — ASCII fallback for legacy clients
|
|
113
|
+
// filename*=UTF-8''... — percent-encoded UTF-8 for modern clients
|
|
114
|
+
const rawFilename = asset.originalFilename || asset.filename;
|
|
115
|
+
const asciiFallback = rawFilename
|
|
116
|
+
.replace(/[^\x20-\x7E]/g, '_') // strip anything outside printable ASCII
|
|
117
|
+
.replace(/["\\]/g, ''); // drop quotes and backslashes that'd break the quoted-string
|
|
118
|
+
const utf8Encoded = encodeURIComponent(rawFilename);
|
|
106
119
|
// Set appropriate headers for the asset
|
|
107
120
|
setHeaders({
|
|
108
121
|
'Content-Type': asset.mimeType || 'application/octet-stream',
|
|
109
122
|
'Content-Length': fileBuffer.length.toString(),
|
|
110
123
|
'Cache-Control': 'public, max-age=31536000, immutable', // Cache for 1 year
|
|
111
|
-
'Content-Disposition': `inline; filename="${
|
|
124
|
+
'Content-Disposition': `inline; filename="${asciiFallback}"; filename*=UTF-8''${utf8Encoded}`,
|
|
112
125
|
...(asset.mimeType?.startsWith('image/') && {
|
|
113
126
|
'Accept-Ranges': 'bytes'
|
|
114
127
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets-cdn.js","sourceRoot":"","sources":["../../../src/lib/routes/assets-cdn.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"assets-cdn.js","sourceRoot":"","sources":["../../../src/lib/routes/assets-cdn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets-cdn.d.ts","sourceRoot":"","sources":["../../src/lib/routes/assets-cdn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,eAAO,MAAM,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"assets-cdn.d.ts","sourceRoot":"","sources":["../../src/lib/routes/assets-cdn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,eAAO,MAAM,GAAG,EAAE,cAkKjB,CAAC"}
|
|
@@ -103,12 +103,25 @@ export const GET = async ({ params, locals, setHeaders, request }) => {
|
|
|
103
103
|
return new Response('Storage adapter does not support file serving', { status: 500 });
|
|
104
104
|
}
|
|
105
105
|
const fileBuffer = await storageAdapter.getObject(asset.path);
|
|
106
|
+
// RFC 6266 Content-Disposition: dual-encode the filename so it survives
|
|
107
|
+
// non-ASCII characters in HTTP headers. HTTP headers are ByteString-
|
|
108
|
+
// restricted (codepoints 0–255), so a raw character like U+202F NARROW
|
|
109
|
+
// NO-BREAK SPACE — which macOS inserts before AM/PM in default
|
|
110
|
+
// screenshot filenames — would otherwise crash the Response
|
|
111
|
+
// constructor. We provide:
|
|
112
|
+
// filename="..." — ASCII fallback for legacy clients
|
|
113
|
+
// filename*=UTF-8''... — percent-encoded UTF-8 for modern clients
|
|
114
|
+
const rawFilename = asset.originalFilename || asset.filename;
|
|
115
|
+
const asciiFallback = rawFilename
|
|
116
|
+
.replace(/[^\x20-\x7E]/g, '_') // strip anything outside printable ASCII
|
|
117
|
+
.replace(/["\\]/g, ''); // drop quotes and backslashes that'd break the quoted-string
|
|
118
|
+
const utf8Encoded = encodeURIComponent(rawFilename);
|
|
106
119
|
// Set appropriate headers for the asset
|
|
107
120
|
setHeaders({
|
|
108
121
|
'Content-Type': asset.mimeType || 'application/octet-stream',
|
|
109
122
|
'Content-Length': fileBuffer.length.toString(),
|
|
110
123
|
'Cache-Control': 'public, max-age=31536000, immutable', // Cache for 1 year
|
|
111
|
-
'Content-Disposition': `inline; filename="${
|
|
124
|
+
'Content-Disposition': `inline; filename="${asciiFallback}"; filename*=UTF-8''${utf8Encoded}`,
|
|
112
125
|
...(asset.mimeType?.startsWith('image/') && {
|
|
113
126
|
'Accept-Ranges': 'bytes'
|
|
114
127
|
})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aphexcms/cms-core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"description": "Aphex CMS Core - A Sanity-style CMS with ports and adapters architecture",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"svelte": "^5.44.0",
|
|
82
82
|
"tailwind-merge": "^3.4.0",
|
|
83
83
|
"tailwind-variants": "^3.2.2",
|
|
84
|
-
"@aphexcms/ui": "0.
|
|
84
|
+
"@aphexcms/ui": "0.6.0"
|
|
85
85
|
},
|
|
86
86
|
"peerDependenciesMeta": {
|
|
87
87
|
"graphql": {
|