UNPKG

@opengis/fastify-table

Version:

core-plugins

129 lines (128 loc) 5.66 kB
/* eslint-disable prefer-rest-params */ import handlebarsSync from "handlebars"; // @ts-expect-error hb cjs module import promisedHandlebars from "promised-handlebars"; // const promisedHandlebars = require("promised-handlebars"); import logger from "../plugins/logger/getLogger.js"; const handlebars = promisedHandlebars(handlebarsSync); // funcs import _math from "./funcs/_math.js"; import ifCond from "./funcs/ifCond.js"; import ifCondAnd from "./funcs/ifCondAnd.js"; import ifCondOr from "./funcs/ifCondOr.js"; import qrcode from "./funcs/qrcode.js"; import select from "./funcs/select.js"; import json from "./funcs/json.js"; import empty from "./funcs/empty.js"; import round from "./funcs/round.js"; import contentList from "./funcs/contentList.js"; import inc from "./funcs/inc.js"; // format import formatAuto from "./format/formatAuto.js"; import formatDate from "./format/formatDate.js"; import formatDigit from "./format/formatDigit.js"; import formatNum from "./format/formatNum.js"; import formatNumber from "./format/formatNumber.js"; import formatRelative from "./format/formatRelative.js"; import formatUnit from "./format/formatUnit.js"; import numFormat from "./format/num_format.js"; import set from "./format/set.js"; // string import strReplace from "./string/str_replace.js"; import coalesce from "./string/coalesce.js"; import concat from "./string/concat.js"; import split from "./string/split.js"; import translit from "./string/translit.js"; import substr from "./string/substr.js"; // from npm/admin import token from "./core/token.js"; import descriptionList from "./list/descriptionList.js"; import tableList from "./list/tableList.js"; import buttonHelper from "./core/buttonHelper.js"; import buttonFilePreview from "./core/buttonFilePreview.js"; import badge from "./core/badge.js"; import mdToHTML from "./utils/mdToHTML.js"; import paddingNumber from "./utils/paddingNumber.js"; function getKeysRecursive(obj, prefix = "") { if (!obj || typeof obj !== "object" || obj?.constructor?.name !== "Object") return []; const obj1 = Array.isArray(obj) ? obj[0] : obj; return Object.keys(obj1 || {}).reduce((acc, curr) => { const fullKey = prefix ? `${prefix}.${curr}` : curr; acc.push(curr); if (obj1[curr] && typeof obj1[curr] === "object" && curr !== "coordinates") { acc.push(...getKeysRecursive(obj1[curr], fullKey)); } return acc; }, []); } // avoid unhandled exception if helper not registered handlebars.registerHelper("helperMissing", function hm() { const options = arguments[arguments.length - 1]; const args = Array.prototype.slice.call(arguments, 0, arguments.length - 1); const keys = getKeysRecursive(options.data?.root); if (args.length || !keys.includes(options.name)) { logger.file("handlebars/error", { message: `Missing helper "${options.name}" at "${JSON.stringify(args).substring(0, 10)}"`, }); return args; } return args; }); // format handlebars.registerHelper("formatAuto", formatAuto); handlebars.registerHelper("formatDate", formatDate); handlebarsSync.registerHelper("formatDate", formatDate); handlebars.registerHelper("formatDigit", formatDigit); handlebars.registerHelper("formatNum", formatNum); handlebars.registerHelper("formatNumber", formatNumber); handlebars.registerHelper("formatRelative", formatRelative); handlebars.registerHelper("formatUnit", formatUnit); handlebars.registerHelper("num_format", numFormat); handlebarsSync.registerHelper("num_format", numFormat); handlebars.registerHelper("set", set); // string handlebars.registerHelper("str_replace", strReplace); handlebars.registerHelper("coalesce", coalesce); handlebars.registerHelper("concat", concat); handlebars.registerHelper("split", split); handlebars.registerHelper("translit", translit); handlebars.registerHelper("substr", substr); handlebars.registerHelper("mls", (value) => value); // funcs handlebars.registerHelper("json", json); handlebars.registerHelper("_math", _math); handlebars.registerHelper("ifCond", ifCond); handlebars.registerHelper("ifCondAnd", ifCondAnd); handlebars.registerHelper("ifCondOr", ifCondOr); handlebars.registerHelper("select", select); handlebars.registerHelper("empty", empty); handlebars.registerHelper("round", round); handlebars.registerHelper("contentList", contentList); handlebars.registerHelper("inc", inc); handlebars.registerHelper("qrcode", qrcode); // Підтримка старого коду handlebars.registerHelper("qrcode-generator-base64", qrcode); // from npm/admin handlebars.registerHelper("token", token); handlebars.registerHelper("mdToHTML", mdToHTML); handlebars.registerHelper("descriptionList", descriptionList); handlebars.registerHelper("tableList", tableList); handlebars.registerHelper("button", buttonHelper); handlebars.registerHelper("buttonFilePreview", buttonFilePreview); handlebarsSync.registerHelper("buttonFilePreview", buttonFilePreview); handlebars.registerHelper("select", select); handlebars.registerHelper("badge", badge); handlebars.registerHelper("contentList", contentList); handlebarsSync.registerHelper("ifCond", ifCond); handlebarsSync.registerHelper("button", buttonHelper); handlebars.registerHelper("ifCond", ifCond); handlebars.registerHelper("empty", () => { }); handlebarsSync.registerHelper("empty", () => { }); handlebars.registerHelper("coalesce", coalesce); handlebarsSync.registerHelper("coalesce", coalesce); handlebarsSync.registerHelper("paddingNumber", paddingNumber); handlebars.registerHelper("paddingNumber", paddingNumber); export { handlebars, handlebarsSync };