UNPKG

@opengis/fastify-table

Version:

core-plugins

137 lines (121 loc) 5.52 kB
import handlebarsSync from 'handlebars'; import promisedHandlebars from '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 = acc.concat(getKeysRecursive(obj1[curr], fullKey)); } return acc; }, []); } // avoid unhandled exception if helper not registered handlebars.registerHelper('helperMissing', function () { 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); 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); 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, };