Skip to content

Commit

Permalink
Added option to prerender images without calling ImageRequestHandler
Browse files Browse the repository at this point in the history
  • Loading branch information
luca-vogels committed Jan 27, 2024
1 parent a89ba36 commit 013e7f0
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 3 deletions.
6 changes: 6 additions & 0 deletions ImageRequestHandler.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,9 @@ export type ImageRequestHandlerOptions = ImageConverterOptions & {
* @returns Request handler that can be passed e.g. to express
*/
export declare function ImageRequestHandler(options: ImageRequestHandlerOptions): (req: Request, res: Response, next: NextFunction) => Promise<void>;
/**
* Takes same input as ImageRequestHandler but pre-renders all images.
* @param options Options of request handler (see ImageRequestHandler).
* @returns Promise that resolves when pre-rendering is finished
*/
export declare function PrerenderImages(options: ImageRequestHandlerOptions): Promise<void>;
24 changes: 23 additions & 1 deletion ImageRequestHandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ImageRequestHandler = void 0;
exports.PrerenderImages = exports.ImageRequestHandler = void 0;
var path_1 = __importDefault(require("path"));
var lup_root_1 = require("lup-root");
var ImageConverter_1 = require("./ImageConverter");
Expand Down Expand Up @@ -135,3 +135,25 @@ function ImageRequestHandler(options) {
}
exports.ImageRequestHandler = ImageRequestHandler;
;
/**
* Takes same input as ImageRequestHandler but pre-renders all images.
* @param options Options of request handler (see ImageRequestHandler).
* @returns Promise that resolves when pre-rendering is finished
*/
function PrerenderImages(options) {
return __awaiter(this, void 0, void 0, function () {
var optimizer, prerenderStorage;
return __generator(this, function (_a) {
optimizer = new ImageConverter_1.ImageConverter(options);
prerenderStorage = options.prerenderOutputDir !== '' ? new ImageStorage_1.ImageDirectoryStorage({
dirPath: options.prerenderOutputDir || index_1.OptimizerSettings.DEFAULT_PREDENDER_OUTPUT_DIRECTORY,
}) : new ImageStorage_1.ImageInPlaceStorage();
return [2 /*return*/, optimizer.prerender(prerenderStorage, options.srcDir, {
recursive: options.prerender,
scaleFactor: options.scaleFactor,
message: options.prerenderMessage,
})];
});
});
}
exports.PrerenderImages = PrerenderImages;
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "lup-images",
"version": "1.2.2",
"version": "1.2.3",
"description": "Optimizes images for web applications",
"files": [
"image/**/*",
Expand Down
21 changes: 20 additions & 1 deletion src/ImageRequestHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,4 +135,23 @@ export function ImageRequestHandler(options : ImageRequestHandlerOptions){
next();
}
};
};
};


/**
* Takes same input as ImageRequestHandler but pre-renders all images.
* @param options Options of request handler (see ImageRequestHandler).
* @returns Promise that resolves when pre-rendering is finished
*/
export async function PrerenderImages(options: ImageRequestHandlerOptions): Promise<void> {
const optimizer = new ImageConverter(options);
const prerenderStorage = options.prerenderOutputDir !== '' ? new ImageDirectoryStorage({
dirPath: options.prerenderOutputDir || OptimizerSettings.DEFAULT_PREDENDER_OUTPUT_DIRECTORY,
}) : new ImageInPlaceStorage();

return optimizer.prerender(prerenderStorage, options.srcDir, {
recursive: options.prerender,
scaleFactor: options.scaleFactor,
message: options.prerenderMessage,
});
}

0 comments on commit 013e7f0

Please sign in to comment.