Comparing version 0.6.4 to 0.6.5
@@ -86,3 +86,3 @@ #!/usr/bin/env node | ||
const err = new IPXError(message); | ||
err.statusMessage = message; | ||
err.statusMessage = "IPX: " + message; | ||
err.statusCode = statusCode; | ||
@@ -106,5 +106,8 @@ return err; | ||
} else { | ||
throw createError("File access error for " + fsPath + ":" + err.code, 500); | ||
throw createError("File access error for " + fsPath + ":" + err.code, 403); | ||
} | ||
} | ||
if (!stats.isFile()) { | ||
throw createError("Path should be a file: " + fsPath, 400); | ||
} | ||
return { | ||
@@ -442,3 +445,9 @@ mtime: stats.mtime, | ||
async function handleRequest(req, res, ipx) { | ||
async function _handleRequest(req, ipx) { | ||
const res = { | ||
statusCode: 200, | ||
statusMessage: "", | ||
headers: {}, | ||
data: null | ||
}; | ||
const url = ufo.parseURL(ufo.normalizeURL(req.url)); | ||
@@ -463,33 +472,46 @@ const params = ufo.parseQuery(url.search); | ||
res.statusCode = 304; | ||
return res.end(); | ||
return res; | ||
} | ||
} | ||
res.setHeader("Last-Modified", +src.mtime); | ||
res.headers["Last-Modified"] = +src.mtime + ""; | ||
} | ||
if (src.maxAge !== void 0) { | ||
res.setHeader("Cache-Control", `max-age=${+src.maxAge}, public, s-maxage=${+src.maxAge}`); | ||
res.headers["Cache-Control"] = `max-age=${+src.maxAge}, public, s-maxage=${+src.maxAge}`; | ||
} | ||
const { data, format } = await img.data(); | ||
const etag = getEtag__default['default'](data); | ||
res.setHeader("ETag", etag); | ||
res.headers.ETag = etag; | ||
if (etag && req.headers["if-none-match"] === etag) { | ||
res.statusCode = 304; | ||
return res.end(); | ||
return res; | ||
} | ||
if (format) { | ||
res.setHeader("Content-Type", "image/" + format); | ||
res.headers["Content-Type"] = `image/${format}`; | ||
} | ||
res.end(data); | ||
return res; | ||
} | ||
function handleRequest(req, ipx) { | ||
return _handleRequest(req, ipx).catch((err) => { | ||
const statusCode = parseInt(err.statusCode) || 500; | ||
const statusMessage = err.statusMessage ? xss__default['default'](err.statusMessage) : `IPX Error (${statusCode})`; | ||
if (process.env.NODE_ENV !== "production" && statusCode === 500) { | ||
console.error(err); | ||
} | ||
return { | ||
statusCode, | ||
statusMessage, | ||
data: statusMessage, | ||
headers: {} | ||
}; | ||
}); | ||
} | ||
function createIPXMiddleware(ipx) { | ||
return function IPXMiddleware(req, res) { | ||
handleRequest(req, res, ipx).catch((err) => { | ||
const statusCode = parseInt(err.statusCode) || 500; | ||
const statusMessage = err.statusMessage ? xss__default['default'](err.statusMessage) : `IPX Error (${statusCode})`; | ||
if (process.env.NODE_ENV !== "production" && statusCode === 500) { | ||
console.error(err); | ||
handleRequest({ url: req.url, headers: req.headers }, ipx).then((_res) => { | ||
res.statusCode = _res.statusCode; | ||
res.statusMessage = _res.statusMessage; | ||
for (const name in _res.headers) { | ||
res.setHeader(name, _res.headers[name]); | ||
} | ||
res.statusCode = statusCode; | ||
res.statusMessage = statusMessage; | ||
return res.end(statusMessage); | ||
res.end(_res.data); | ||
}); | ||
@@ -496,0 +518,0 @@ }; |
@@ -42,4 +42,15 @@ import { IncomingMessage, ServerResponse } from 'http'; | ||
interface IPXHRequest { | ||
url: string; | ||
headers?: Record<string, string>; | ||
} | ||
interface IPXHResponse { | ||
statusCode: number; | ||
statusMessage: string; | ||
headers: Record<string, string>; | ||
data: any; | ||
} | ||
declare function handleRequest(req: IPXHRequest, ipx: IPX): Promise<IPXHResponse>; | ||
declare function createIPXMiddleware(ipx: IPX): (req: IncomingMessage, res: ServerResponse) => void; | ||
export { IPX, IPXCTX, IPXInputOptions, IPXOptions, ImageMeta, Source, SourceData, SourceFactory, createIPX, createIPXMiddleware }; | ||
export { IPX, IPXCTX, IPXHRequest, IPXHResponse, IPXInputOptions, IPXOptions, ImageMeta, Source, SourceData, SourceFactory, createIPX, createIPXMiddleware, handleRequest }; |
@@ -83,3 +83,3 @@ 'use strict'; | ||
const err = new IPXError(message); | ||
err.statusMessage = message; | ||
err.statusMessage = "IPX: " + message; | ||
err.statusCode = statusCode; | ||
@@ -103,5 +103,8 @@ return err; | ||
} else { | ||
throw createError("File access error for " + fsPath + ":" + err.code, 500); | ||
throw createError("File access error for " + fsPath + ":" + err.code, 403); | ||
} | ||
} | ||
if (!stats.isFile()) { | ||
throw createError("Path should be a file: " + fsPath, 400); | ||
} | ||
return { | ||
@@ -439,3 +442,9 @@ mtime: stats.mtime, | ||
async function handleRequest(req, res, ipx) { | ||
async function _handleRequest(req, ipx) { | ||
const res = { | ||
statusCode: 200, | ||
statusMessage: "", | ||
headers: {}, | ||
data: null | ||
}; | ||
const url = ufo.parseURL(ufo.normalizeURL(req.url)); | ||
@@ -460,33 +469,46 @@ const params = ufo.parseQuery(url.search); | ||
res.statusCode = 304; | ||
return res.end(); | ||
return res; | ||
} | ||
} | ||
res.setHeader("Last-Modified", +src.mtime); | ||
res.headers["Last-Modified"] = +src.mtime + ""; | ||
} | ||
if (src.maxAge !== void 0) { | ||
res.setHeader("Cache-Control", `max-age=${+src.maxAge}, public, s-maxage=${+src.maxAge}`); | ||
res.headers["Cache-Control"] = `max-age=${+src.maxAge}, public, s-maxage=${+src.maxAge}`; | ||
} | ||
const { data, format } = await img.data(); | ||
const etag = getEtag__default['default'](data); | ||
res.setHeader("ETag", etag); | ||
res.headers.ETag = etag; | ||
if (etag && req.headers["if-none-match"] === etag) { | ||
res.statusCode = 304; | ||
return res.end(); | ||
return res; | ||
} | ||
if (format) { | ||
res.setHeader("Content-Type", "image/" + format); | ||
res.headers["Content-Type"] = `image/${format}`; | ||
} | ||
res.end(data); | ||
return res; | ||
} | ||
function handleRequest(req, ipx) { | ||
return _handleRequest(req, ipx).catch((err) => { | ||
const statusCode = parseInt(err.statusCode) || 500; | ||
const statusMessage = err.statusMessage ? xss__default['default'](err.statusMessage) : `IPX Error (${statusCode})`; | ||
if (process.env.NODE_ENV !== "production" && statusCode === 500) { | ||
console.error(err); | ||
} | ||
return { | ||
statusCode, | ||
statusMessage, | ||
data: statusMessage, | ||
headers: {} | ||
}; | ||
}); | ||
} | ||
function createIPXMiddleware(ipx) { | ||
return function IPXMiddleware(req, res) { | ||
handleRequest(req, res, ipx).catch((err) => { | ||
const statusCode = parseInt(err.statusCode) || 500; | ||
const statusMessage = err.statusMessage ? xss__default['default'](err.statusMessage) : `IPX Error (${statusCode})`; | ||
if (process.env.NODE_ENV !== "production" && statusCode === 500) { | ||
console.error(err); | ||
handleRequest({ url: req.url, headers: req.headers }, ipx).then((_res) => { | ||
res.statusCode = _res.statusCode; | ||
res.statusMessage = _res.statusMessage; | ||
for (const name in _res.headers) { | ||
res.setHeader(name, _res.headers[name]); | ||
} | ||
res.statusCode = statusCode; | ||
res.statusMessage = statusMessage; | ||
return res.end(statusMessage); | ||
res.end(_res.data); | ||
}); | ||
@@ -498,1 +520,2 @@ }; | ||
exports.createIPXMiddleware = createIPXMiddleware; | ||
exports.handleRequest = handleRequest; |
{ | ||
"name": "ipx", | ||
"version": "0.6.4", | ||
"version": "0.6.5", | ||
"repository": "nuxt-contrib/ipx", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
50469
1556