summaryrefslogtreecommitdiff
path: root/client/simple/tools
diff options
context:
space:
mode:
Diffstat (limited to 'client/simple/tools')
-rw-r--r--client/simple/tools/img.js70
-rw-r--r--client/simple/tools/jinja_svg_catalog.js67
-rw-r--r--client/simple/tools/plg.js19
3 files changed, 67 insertions, 89 deletions
diff --git a/client/simple/tools/img.js b/client/simple/tools/img.js
index 8f815970a..3f79f5ac5 100644
--- a/client/simple/tools/img.js
+++ b/client/simple/tools/img.js
@@ -9,40 +9,35 @@ import { optimize as svgo } from "svgo";
* @property {string} dest - Name of the destination file.
*/
-
/**
* Convert a list of SVG files to PNG.
*
* @param {Src2Dest[]} items - Array of SVG files (src: SVG, dest:PNG) to convert.
*/
-async function svg2png (items) {
- items.forEach(
- async (item) => {
- try {
- fs.mkdir(path.dirname(item.dest), { recursive: true }, (err) => {
- if (err)
- throw err;
- });
+async function svg2png(items) {
+ items.forEach(async (item) => {
+ try {
+ fs.mkdir(path.dirname(item.dest), { recursive: true }, (err) => {
+ if (err) throw err;
+ });
- const info = await sharp(item.src).png({
+ const info = await sharp(item.src)
+ .png({
force: true,
compressionLevel: 9,
- palette: true,
- }).toFile(item.dest);
+ palette: true
+ })
+ .toFile(item.dest);
- console.log(
- `[svg2png] created ${item.dest} -- bytes: ${info.size}, w:${info.width}px, h:${info.height}px`
- );
- } catch (err) {
- console.error(`ERROR: ${item.dest} -- ${err}`);
- throw(err);
- }
+ console.log(`[svg2png] created ${item.dest} -- bytes: ${info.size}, w:${info.width}px, h:${info.height}px`);
+ } catch (err) {
+ console.error(`ERROR: ${item.dest} -- ${err}`);
+ throw err;
}
- );
+ });
}
-
/**
* Optimize SVG images for WEB.
*
@@ -51,28 +46,21 @@ async function svg2png (items) {
*/
async function svg2svg(svgo_opts, items) {
- items.forEach(
- async (item) => {
- try {
- fs.mkdir(path.dirname(item.dest), { recursive: true }, (err) => {
- if (err)
- throw err;
- });
+ items.forEach(async (item) => {
+ try {
+ fs.mkdir(path.dirname(item.dest), { recursive: true }, (err) => {
+ if (err) throw err;
+ });
- const raw = fs.readFileSync(item.src, "utf8");
- const opt = svgo(raw, svgo_opts);
- fs.writeFileSync(item.dest, opt.data);
- console.log(
- `[svg2svg] optimized: ${item.dest} -- src: ${item.src}`
- );
-
- } catch (err) {
- console.error(`ERROR: optimize src: ${item.src} -- ${err}`);
- throw(err);
- }
+ const raw = fs.readFileSync(item.src, "utf8");
+ const opt = svgo(raw, svgo_opts);
+ fs.writeFileSync(item.dest, opt.data);
+ console.log(`[svg2svg] optimized: ${item.dest} -- src: ${item.src}`);
+ } catch (err) {
+ console.error(`ERROR: optimize src: ${item.src} -- ${err}`);
+ throw err;
}
- );
+ });
}
-
export { svg2png, svg2svg };
diff --git a/client/simple/tools/jinja_svg_catalog.js b/client/simple/tools/jinja_svg_catalog.js
index e3e8f1216..a3e4fd166 100644
--- a/client/simple/tools/jinja_svg_catalog.js
+++ b/client/simple/tools/jinja_svg_catalog.js
@@ -1,8 +1,8 @@
+import { Edge } from "edge.js";
import fs from "fs";
-import { resolve, dirname } from "path";
-import { Edge } from 'edge.js';
+import { dirname, resolve } from "path";
import { optimize as svgo } from "svgo";
-import { fileURLToPath } from 'url';
+import { fileURLToPath } from "url";
const __dirname = dirname(fileURLToPath(import.meta.url));
const __jinja_class_placeholder__ = "__jinja_class_placeholder__";
@@ -30,7 +30,6 @@ const __jinja_class_placeholder__ = "__jinja_class_placeholder__";
* @property {string} class - SVG's class name (value of XML class attribute)
*/
-
// -- functions
/**
@@ -43,34 +42,30 @@ const __jinja_class_placeholder__ = "__jinja_class_placeholder__";
*/
function jinja_svg_catalog(dest, macros, items) {
-
const svg_catalog = {};
const edge_template = resolve(__dirname, "jinja_svg_catalog.html.edge");
- items.forEach(
- (item) => {
-
- /** @type {import("svgo").Config} */
- // JSON.stringify & JSON.parse are used to create a deep copy of the
- // item.svgo_opts object
- const svgo_opts = JSON.parse(JSON.stringify(item.svgo_opts));
- svgo_opts.plugins.push({
- name: "addClassesToSVGElement",
- params: {
- classNames: [__jinja_class_placeholder__]
- }}
- );
-
- try {
- const raw = fs.readFileSync(item.src, "utf8");
- const opt = svgo(raw, svgo_opts);
- svg_catalog[item.name] = opt.data;
- } catch (err) {
- console.error(`ERROR: jinja_svg_catalog processing ${item.name} src: ${item.src} -- ${err}`);
- throw(err);
+ items.forEach((item) => {
+ /** @type {import("svgo").Config} */
+ // JSON.stringify & JSON.parse are used to create a deep copy of the
+ // item.svgo_opts object
+ const svgo_opts = JSON.parse(JSON.stringify(item.svgo_opts));
+ svgo_opts.plugins.push({
+ name: "addClassesToSVGElement",
+ params: {
+ classNames: [__jinja_class_placeholder__]
}
+ });
+
+ try {
+ const raw = fs.readFileSync(item.src, "utf8");
+ const opt = svgo(raw, svgo_opts);
+ svg_catalog[item.name] = opt.data;
+ } catch (err) {
+ console.error(`ERROR: jinja_svg_catalog processing ${item.name} src: ${item.src} -- ${err}`);
+ throw err;
}
- );
+ });
fs.mkdir(dirname(dest), { recursive: true }, (err) => {
if (err) throw err;
@@ -82,20 +77,16 @@ function jinja_svg_catalog(dest, macros, items) {
edge_template: edge_template,
__jinja_class_placeholder__: __jinja_class_placeholder__,
// see https://github.com/edge-js/edge/issues/162
- open_curly_brace : "{{",
- close_curly_brace : "}}"
+ open_curly_brace: "{{",
+ close_curly_brace: "}}"
};
- const jinjatmpl = Edge.create().renderRawSync(
- fs.readFileSync(edge_template, "utf-8"),
- ctx
- );
+ const jinjatmpl = Edge.create().renderRawSync(fs.readFileSync(edge_template, "utf-8"), ctx);
fs.writeFileSync(dest, jinjatmpl);
console.log(`[jinja_svg_catalog] created: ${dest}`);
}
-
/**
* Calls jinja_svg_catalog for a collection of icon sets where each set has its
* own parameters.
@@ -109,7 +100,6 @@ function jinja_svg_sets(dest, macros, sets) {
const items = [];
const all = [];
for (const obj of sets) {
-
for (const [name, file] of Object.entries(obj.set)) {
if (all.includes(name)) {
throw new Error(`ERROR: ${name} has already been defined`);
@@ -117,7 +107,7 @@ function jinja_svg_sets(dest, macros, sets) {
items.push({
name: name,
src: resolve(obj.base, file),
- svgo_opts: obj.svgo_opts,
+ svgo_opts: obj.svgo_opts
});
}
jinja_svg_catalog(dest, macros, items);
@@ -126,7 +116,4 @@ function jinja_svg_sets(dest, macros, sets) {
// -- exports
-export {
- jinja_svg_sets,
- jinja_svg_catalog,
-};
+export { jinja_svg_sets, jinja_svg_catalog };
diff --git a/client/simple/tools/plg.js b/client/simple/tools/plg.js
index 16ec268b6..6cd4d491d 100644
--- a/client/simple/tools/plg.js
+++ b/client/simple/tools/plg.js
@@ -8,8 +8,7 @@
* needed.
*/
-import { svg2png } from "./img.js";
-import { svg2svg } from "./img.js";
+import { svg2png, svg2svg } from "./img.js";
/**
* Vite plugin to convert a list of SVG files to PNG.
@@ -18,9 +17,11 @@ import { svg2svg } from "./img.js";
*/
function plg_svg2png(items) {
return {
- name: 'searxng-simple-svg2png',
- apply: 'build', // or 'serve'
- async writeBundle() { svg2png(items); },
+ name: "searxng-simple-svg2png",
+ apply: "build", // or 'serve'
+ async writeBundle() {
+ svg2png(items);
+ }
};
}
@@ -32,9 +33,11 @@ function plg_svg2png(items) {
*/
function plg_svg2svg(svgo_opts, items) {
return {
- name: 'searxng-simple-svg2png',
- apply: 'build', // or 'serve'
- async writeBundle() { svg2svg(items, svgo_opts); },
+ name: "searxng-simple-svg2png",
+ apply: "build", // or 'serve'
+ async writeBundle() {
+ svg2svg(items, svgo_opts);
+ }
};
}