@squarespace/template-engine
Advanced tools
@@ -43,2 +43,5 @@ import { Context } from '../context'; | ||
| } | ||
| export declare class KeyByFormatter extends Formatter { | ||
| apply(args: string[], vars: Variable[], ctx: Context): void; | ||
| } | ||
| export declare class LookupFormatter extends Formatter { | ||
@@ -45,0 +48,0 @@ apply(args: string[], vars: Variable[], ctx: Context): void; |
@@ -288,2 +288,26 @@ var __extends = (this && this.__extends) || (function () { | ||
| export { JsonPretty }; | ||
| var KeyByFormatter = /** @class */ (function (_super) { | ||
| __extends(KeyByFormatter, _super); | ||
| function KeyByFormatter() { | ||
| return _super !== null && _super.apply(this, arguments) || this; | ||
| } | ||
| KeyByFormatter.prototype.apply = function (args, vars, ctx) { | ||
| var first = vars[0]; | ||
| var path = args[0]; | ||
| var keyByMap = {}; | ||
| if (first.node.type === Type.ARRAY && path) { | ||
| var splitPath = splitVariable(path); | ||
| for (var _i = 0, _a = first.get(); _i < _a.length; _i++) { | ||
| var val = _a[_i]; | ||
| var nodeAtPath = new Node(val).path(splitPath); | ||
| if (nodeAtPath.type !== Type.MISSING) { | ||
| keyByMap[nodeAtPath.value] = val; | ||
| } | ||
| } | ||
| } | ||
| first.set(keyByMap); | ||
| }; | ||
| return KeyByFormatter; | ||
| }(Formatter)); | ||
| export { KeyByFormatter }; | ||
| var LookupFormatter = /** @class */ (function (_super) { | ||
@@ -528,2 +552,3 @@ __extends(LookupFormatter, _super); | ||
| 'json-pretty': new JsonPretty(), | ||
| 'key-by': new KeyByFormatter(), | ||
| 'lookup': new LookupFormatter(), | ||
@@ -530,0 +555,0 @@ 'mod': new ModFormatter(), |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"formatters.core.js","sourceRoot":"","sources":["../../src/plugins/formatters.core.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context } from '../context';\nimport { partialMissing } from '../errors';\nimport { isTruthy } from '../node';\nimport { Formatter, FormatterTable } from '../plugin';\nimport { MacroCode, RootCode } from '../instructions';\nimport { MISSING_NODE, Node } from '../node';\nimport { Variable } from '../variable';\nimport { Type } from '../types';\nimport { executeTemplate } from '../exec';\nimport { splitVariable } from '../util';\nimport { format } from './util.format';\nimport { escapeHtmlAttributes, escapeScriptTags, slugify, truncate } from './util.string';\nimport utf8 from 'utf8';\n\nexport class ApplyFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n\n // Bail if we have no arguments or no engine defined.\n if (args.length === 0 || !ctx.engine) {\n first.set('');\n return;\n }\n\n // Get the name of the partial / macro.\n const name = args[0];\n\n let argvar: Variable | undefined;\n\n // Set whether the partial / macro's execution context should be private.\n // This will block variable resolution from proceeding past the current\n // stack frame.\n let privateContext = false;\n if (args.length > 1) {\n const argmap: any = {};\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n\n // Mark the context as private\n if (arg === 'private') {\n privateContext = true;\n continue;\n }\n\n // Parse the colon-delimited arguments into key-values\n const j = arg.indexOf('=');\n if (j !== -1) {\n const k = arg.slice(0, j);\n const v = arg.slice(j + 1);\n argmap[k] = v;\n }\n }\n\n // Pass formatter's argument to the macro / template\n argvar = ctx.newVariable('@args', new Node(argmap));\n }\n\n // Retrieve the partial / macro by name, If none defined, bail.\n const inst = ctx.getPartial(name);\n if (!Array.isArray(inst)) {\n ctx.error(partialMissing(name));\n first.set('');\n return;\n }\n\n if (ctx.enterPartial(name)) {\n // Execute the template and set the variable to the result.\n const text = executeTemplate(ctx, inst as RootCode | MacroCode, first.node, privateContext, argvar);\n first.set(text);\n ctx.exitPartial(name);\n } else {\n // Executing the partial failed, so set empty.\n first.set('');\n }\n }\n}\n\nexport class CountFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const node = first.node;\n if (node.type === Type.OBJECT) {\n first.set(Object.keys(node.value).length);\n } else if (node.type === Type.ARRAY) {\n first.set(node.value.length);\n } else {\n first.set(0);\n }\n }\n}\n\nexport class CycleFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asNumber();\n const count = args.length;\n let index = (value - 1) % count;\n if (index < 0) {\n index += count;\n }\n first.set(args[index]);\n }\n}\n\nexport class EncodeSpaceFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(value.replace(/\\s/g, ' '));\n }\n}\n\nexport class EncodeUriFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(encodeURI(value));\n }\n}\n\nexport class EncodeUriComponentFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(encodeURIComponent(value));\n }\n}\n\nexport class FormatFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const values = args.map(arg => {\n const names = splitVariable(arg);\n const node = ctx.resolve(names, first.node);\n return node.type === Type.NULL || node.type === Type.MISSING ? '' : node.value;\n });\n const fmt = first.node.asString();\n const result = format(fmt, values);\n first.set(result);\n }\n}\n\nexport class GetFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n let tmp = first.node;\n for (const arg of args) {\n const path = splitVariable(arg);\n const node = ctx.resolve(path);\n\n if (node.type === Type.MISSING) {\n tmp = MISSING_NODE;\n } else {\n\n const resolved: (number | string)[] =\n node.type === Type.ARRAY ? (node.value as (number | string)[]) :\n node.type === Type.NUMBER ? [node.asNumber()] : [node.asString()];\n\n tmp = tmp.path(resolved);\n }\n\n // Once we hit a missing node, no point continuing\n if (tmp.type === Type.MISSING) {\n break;\n }\n }\n first.set(tmp);\n }\n}\n\nexport class HtmlFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.replace({\n '&': '&',\n '<': '<',\n '>': '>'\n });\n first.set(value);\n }\n}\n\nexport class HtmlAttrFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n first.set(escapeHtmlAttributes(first.node.asString()));\n }\n}\n\nexport class IterFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const value = ctx.lookupStack('@index');\n vars[0].set(value.asString());\n }\n}\n\nexport class JsonFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n if (first.node.isMissing()) {\n first.set('');\n } else {\n const value = JSON.stringify(first.node.value);\n first.set(escapeScriptTags(value));\n }\n }\n}\n\nexport class JsonPretty extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n if (first.node.isMissing()) {\n first.set('');\n } else {\n const value = JSON.stringify(first.node.value, undefined, ' ');\n first.set(escapeScriptTags(value));\n }\n }\n}\n\nexport class LookupFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const key = args[0];\n if (key) {\n const ref = ctx.resolve(splitVariable(key));\n const value = ctx.resolve(splitVariable(ref.asString()));\n first.set(value);\n } else {\n first.set('');\n }\n }\n}\n\nexport class ModFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const n = first.node.asNumber();\n const divisor = parseInt(args[0], 10) || 2;\n first.set(n % (divisor && isFinite(divisor) ? divisor : 2));\n }\n}\n\nexport class OutputFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const value = args.join(' ');\n vars[0].set(value);\n }\n}\n\nexport class PluralizeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n let singular = '';\n let plural = 's';\n if (args.length === 1) {\n plural = args[0];\n } else if (args.length >= 2) {\n singular = args[0];\n plural = args[1];\n }\n\n const first = vars[0];\n const result = first.node.asNumber() === 1 ? singular : plural;\n first.set(result);\n }\n}\n\nexport class PropFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n let tmp = first.node;\n for (const arg of args) {\n const path = splitVariable(arg);\n tmp = tmp.path(path);\n if (tmp.type === Type.MISSING) {\n break;\n }\n }\n first.set(tmp);\n }\n}\n\nexport class RawFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n first.set(JSON.stringify(first.node.value));\n }\n}\n\nexport class RoundFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asNumber();\n first.set(Math.round(value));\n }\n}\n\nconst RE_SAFE = /<[^>]*?>/g;\n\nexport class SafeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n if (isTruthy(first.node)) {\n const value = first.node.asString();\n first.set(value.replace(RE_SAFE, ''));\n }\n }\n}\n\nexport class SlugifyFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(slugify(value));\n }\n}\n\nconst RE_SMARTY_1 = /(^|[-\\u2014\\\\s(\\[\"])'/gm;\nconst RE_SMARTY_APOS = /'/gm;\nconst RE_SMARTY_2 = /(^|[-\\u2014/\\[(\\u2018\\s])\"/gm;\nconst RE_SMARTY_QUOTE = /\"/gm;\nconst RE_SMARTY_MDASH = /--/gm;\n\nexport class SmartyPantsFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n let value = first.node.asString();\n value = value.replace(RE_SMARTY_1, '$1\\u2018');\n value = value.replace(RE_SMARTY_APOS, '\\u2019');\n value = value.replace(RE_SMARTY_2, '$1\\u201c');\n value = value.replace(RE_SMARTY_QUOTE, '\\u201d');\n value = value.replace(RE_SMARTY_MDASH, '\\u2014');\n first.set(value);\n }\n}\n\nexport class StrFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n switch (first.node.type) {\n case Type.OBJECT:\n case Type.ARRAY:\n first.set('');\n break;\n default:\n first.set(first.node.asString());\n break;\n }\n }\n}\n\nexport class TruncateFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n let limit = 100;\n let ellipsis = '...';\n if (args.length) {\n limit = parseInt(args[0], 10);\n }\n if (args.length > 1) {\n ellipsis = args[1];\n }\n\n if (isFinite(limit) && limit > 0) {\n const first = vars[0];\n let value = first.node.asString();\n value = truncate(value, limit, ellipsis);\n first.set(value);\n }\n }\n}\n\nexport class UrlEncodeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n const utf = utf8.encode(value);\n first.set(escape(utf));\n }\n}\n\nexport const CORE_FORMATTERS: FormatterTable = {\n 'apply': new ApplyFormatter(),\n 'count': new CountFormatter(),\n 'cycle': new CycleFormatter(),\n 'encode-space': new EncodeSpaceFormatter(),\n 'encode-uri': new EncodeUriFormatter(),\n 'encode-uri-component': new EncodeUriComponentFormatter(),\n 'format': new FormatFormatter(),\n 'get': new GetFormatter(),\n 'html': new HtmlFormatter(),\n 'htmlattr': new HtmlAttrFormatter(),\n 'htmltag': new HtmlAttrFormatter(), // same as \"htmlattr\"\n 'iter': new IterFormatter(),\n 'json': new JsonFormatter(),\n 'json-pretty': new JsonPretty(),\n 'lookup': new LookupFormatter(),\n 'mod': new ModFormatter(),\n 'output': new OutputFormatter(),\n 'pluralize': new PluralizeFormatter(),\n 'prop': new PropFormatter(),\n 'raw': new RawFormatter(),\n 'round': new RoundFormatter(),\n 'safe': new SafeFormatter(),\n 'slugify': new SlugifyFormatter(),\n 'smartypants': new SmartyPantsFormatter(),\n 'str': new StrFormatter(),\n 'truncate': new TruncateFormatter(),\n 'url-encode': new UrlEncodeFormatter(),\n};\n"]} | ||
| {"version":3,"file":"formatters.core.js","sourceRoot":"","sources":["../../src/plugins/formatters.core.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context } from '../context';\nimport { partialMissing } from '../errors';\nimport { isTruthy } from '../node';\nimport { Formatter, FormatterTable } from '../plugin';\nimport { MacroCode, RootCode } from '../instructions';\nimport { MISSING_NODE, Node } from '../node';\nimport { Variable } from '../variable';\nimport { Type } from '../types';\nimport { executeTemplate } from '../exec';\nimport { splitVariable } from '../util';\nimport { format } from './util.format';\nimport { escapeHtmlAttributes, escapeScriptTags, slugify, truncate } from './util.string';\nimport utf8 from 'utf8';\n\nexport class ApplyFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n\n // Bail if we have no arguments or no engine defined.\n if (args.length === 0 || !ctx.engine) {\n first.set('');\n return;\n }\n\n // Get the name of the partial / macro.\n const name = args[0];\n\n let argvar: Variable | undefined;\n\n // Set whether the partial / macro's execution context should be private.\n // This will block variable resolution from proceeding past the current\n // stack frame.\n let privateContext = false;\n if (args.length > 1) {\n const argmap: any = {};\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n\n // Mark the context as private\n if (arg === 'private') {\n privateContext = true;\n continue;\n }\n\n // Parse the colon-delimited arguments into key-values\n const j = arg.indexOf('=');\n if (j !== -1) {\n const k = arg.slice(0, j);\n const v = arg.slice(j + 1);\n argmap[k] = v;\n }\n }\n\n // Pass formatter's argument to the macro / template\n argvar = ctx.newVariable('@args', new Node(argmap));\n }\n\n // Retrieve the partial / macro by name, If none defined, bail.\n const inst = ctx.getPartial(name);\n if (!Array.isArray(inst)) {\n ctx.error(partialMissing(name));\n first.set('');\n return;\n }\n\n if (ctx.enterPartial(name)) {\n // Execute the template and set the variable to the result.\n const text = executeTemplate(ctx, inst as RootCode | MacroCode, first.node, privateContext, argvar);\n first.set(text);\n ctx.exitPartial(name);\n } else {\n // Executing the partial failed, so set empty.\n first.set('');\n }\n }\n}\n\nexport class CountFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const node = first.node;\n if (node.type === Type.OBJECT) {\n first.set(Object.keys(node.value).length);\n } else if (node.type === Type.ARRAY) {\n first.set(node.value.length);\n } else {\n first.set(0);\n }\n }\n}\n\nexport class CycleFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asNumber();\n const count = args.length;\n let index = (value - 1) % count;\n if (index < 0) {\n index += count;\n }\n first.set(args[index]);\n }\n}\n\nexport class EncodeSpaceFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(value.replace(/\\s/g, ' '));\n }\n}\n\nexport class EncodeUriFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(encodeURI(value));\n }\n}\n\nexport class EncodeUriComponentFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(encodeURIComponent(value));\n }\n}\n\nexport class FormatFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const values = args.map(arg => {\n const names = splitVariable(arg);\n const node = ctx.resolve(names, first.node);\n return node.type === Type.NULL || node.type === Type.MISSING ? '' : node.value;\n });\n const fmt = first.node.asString();\n const result = format(fmt, values);\n first.set(result);\n }\n}\n\nexport class GetFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n let tmp = first.node;\n for (const arg of args) {\n const path = splitVariable(arg);\n const node = ctx.resolve(path);\n\n if (node.type === Type.MISSING) {\n tmp = MISSING_NODE;\n } else {\n\n const resolved: (number | string)[] =\n node.type === Type.ARRAY ? (node.value as (number | string)[]) :\n node.type === Type.NUMBER ? [node.asNumber()] : [node.asString()];\n\n tmp = tmp.path(resolved);\n }\n\n // Once we hit a missing node, no point continuing\n if (tmp.type === Type.MISSING) {\n break;\n }\n }\n first.set(tmp);\n }\n}\n\nexport class HtmlFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.replace({\n '&': '&',\n '<': '<',\n '>': '>'\n });\n first.set(value);\n }\n}\n\nexport class HtmlAttrFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n first.set(escapeHtmlAttributes(first.node.asString()));\n }\n}\n\nexport class IterFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const value = ctx.lookupStack('@index');\n vars[0].set(value.asString());\n }\n}\n\nexport class JsonFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n if (first.node.isMissing()) {\n first.set('');\n } else {\n const value = JSON.stringify(first.node.value);\n first.set(escapeScriptTags(value));\n }\n }\n}\n\nexport class JsonPretty extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n if (first.node.isMissing()) {\n first.set('');\n } else {\n const value = JSON.stringify(first.node.value, undefined, ' ');\n first.set(escapeScriptTags(value));\n }\n }\n}\n\nexport class KeyByFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const path = args[0];\n const keyByMap: { [key: string]: any } = {};\n\n if (first.node.type === Type.ARRAY && path) {\n const splitPath = splitVariable(path);\n\n for (const val of first.get()) {\n const nodeAtPath = new Node(val).path(splitPath);\n\n if (nodeAtPath.type !== Type.MISSING) {\n keyByMap[nodeAtPath.value] = val;\n }\n }\n }\n\n first.set(keyByMap);\n }\n}\n\nexport class LookupFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const key = args[0];\n if (key) {\n const ref = ctx.resolve(splitVariable(key));\n const value = ctx.resolve(splitVariable(ref.asString()));\n first.set(value);\n } else {\n first.set('');\n }\n }\n}\n\nexport class ModFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const n = first.node.asNumber();\n const divisor = parseInt(args[0], 10) || 2;\n first.set(n % (divisor && isFinite(divisor) ? divisor : 2));\n }\n}\n\nexport class OutputFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const value = args.join(' ');\n vars[0].set(value);\n }\n}\n\nexport class PluralizeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n let singular = '';\n let plural = 's';\n if (args.length === 1) {\n plural = args[0];\n } else if (args.length >= 2) {\n singular = args[0];\n plural = args[1];\n }\n\n const first = vars[0];\n const result = first.node.asNumber() === 1 ? singular : plural;\n first.set(result);\n }\n}\n\nexport class PropFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n let tmp = first.node;\n for (const arg of args) {\n const path = splitVariable(arg);\n tmp = tmp.path(path);\n if (tmp.type === Type.MISSING) {\n break;\n }\n }\n first.set(tmp);\n }\n}\n\nexport class RawFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n first.set(JSON.stringify(first.node.value));\n }\n}\n\nexport class RoundFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asNumber();\n first.set(Math.round(value));\n }\n}\n\nconst RE_SAFE = /<[^>]*?>/g;\n\nexport class SafeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n if (isTruthy(first.node)) {\n const value = first.node.asString();\n first.set(value.replace(RE_SAFE, ''));\n }\n }\n}\n\nexport class SlugifyFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(slugify(value));\n }\n}\n\nconst RE_SMARTY_1 = /(^|[-\\u2014\\\\s(\\[\"])'/gm;\nconst RE_SMARTY_APOS = /'/gm;\nconst RE_SMARTY_2 = /(^|[-\\u2014/\\[(\\u2018\\s])\"/gm;\nconst RE_SMARTY_QUOTE = /\"/gm;\nconst RE_SMARTY_MDASH = /--/gm;\n\nexport class SmartyPantsFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n let value = first.node.asString();\n value = value.replace(RE_SMARTY_1, '$1\\u2018');\n value = value.replace(RE_SMARTY_APOS, '\\u2019');\n value = value.replace(RE_SMARTY_2, '$1\\u201c');\n value = value.replace(RE_SMARTY_QUOTE, '\\u201d');\n value = value.replace(RE_SMARTY_MDASH, '\\u2014');\n first.set(value);\n }\n}\n\nexport class StrFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n switch (first.node.type) {\n case Type.OBJECT:\n case Type.ARRAY:\n first.set('');\n break;\n default:\n first.set(first.node.asString());\n break;\n }\n }\n}\n\nexport class TruncateFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n let limit = 100;\n let ellipsis = '...';\n if (args.length) {\n limit = parseInt(args[0], 10);\n }\n if (args.length > 1) {\n ellipsis = args[1];\n }\n\n if (isFinite(limit) && limit > 0) {\n const first = vars[0];\n let value = first.node.asString();\n value = truncate(value, limit, ellipsis);\n first.set(value);\n }\n }\n}\n\nexport class UrlEncodeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n const utf = utf8.encode(value);\n first.set(escape(utf));\n }\n}\n\nexport const CORE_FORMATTERS: FormatterTable = {\n 'apply': new ApplyFormatter(),\n 'count': new CountFormatter(),\n 'cycle': new CycleFormatter(),\n 'encode-space': new EncodeSpaceFormatter(),\n 'encode-uri': new EncodeUriFormatter(),\n 'encode-uri-component': new EncodeUriComponentFormatter(),\n 'format': new FormatFormatter(),\n 'get': new GetFormatter(),\n 'html': new HtmlFormatter(),\n 'htmlattr': new HtmlAttrFormatter(),\n 'htmltag': new HtmlAttrFormatter(), // same as \"htmlattr\"\n 'iter': new IterFormatter(),\n 'json': new JsonFormatter(),\n 'json-pretty': new JsonPretty(),\n 'key-by': new KeyByFormatter(),\n 'lookup': new LookupFormatter(),\n 'mod': new ModFormatter(),\n 'output': new OutputFormatter(),\n 'pluralize': new PluralizeFormatter(),\n 'prop': new PropFormatter(),\n 'raw': new RawFormatter(),\n 'round': new RoundFormatter(),\n 'safe': new SafeFormatter(),\n 'slugify': new SlugifyFormatter(),\n 'smartypants': new SmartyPantsFormatter(),\n 'str': new StrFormatter(),\n 'truncate': new TruncateFormatter(),\n 'url-encode': new UrlEncodeFormatter(),\n};\n"]} |
@@ -43,2 +43,5 @@ import { Context } from '../context'; | ||
| } | ||
| export declare class KeyByFormatter extends Formatter { | ||
| apply(args: string[], vars: Variable[], ctx: Context): void; | ||
| } | ||
| export declare class LookupFormatter extends Formatter { | ||
@@ -45,0 +48,0 @@ apply(args: string[], vars: Variable[], ctx: Context): void; |
@@ -293,2 +293,26 @@ "use strict"; | ||
| exports.JsonPretty = JsonPretty; | ||
| var KeyByFormatter = /** @class */ (function (_super) { | ||
| __extends(KeyByFormatter, _super); | ||
| function KeyByFormatter() { | ||
| return _super !== null && _super.apply(this, arguments) || this; | ||
| } | ||
| KeyByFormatter.prototype.apply = function (args, vars, ctx) { | ||
| var first = vars[0]; | ||
| var path = args[0]; | ||
| var keyByMap = {}; | ||
| if (first.node.type === types_1.Type.ARRAY && path) { | ||
| var splitPath = util_1.splitVariable(path); | ||
| for (var _i = 0, _a = first.get(); _i < _a.length; _i++) { | ||
| var val = _a[_i]; | ||
| var nodeAtPath = new node_2.Node(val).path(splitPath); | ||
| if (nodeAtPath.type !== types_1.Type.MISSING) { | ||
| keyByMap[nodeAtPath.value] = val; | ||
| } | ||
| } | ||
| } | ||
| first.set(keyByMap); | ||
| }; | ||
| return KeyByFormatter; | ||
| }(plugin_1.Formatter)); | ||
| exports.KeyByFormatter = KeyByFormatter; | ||
| var LookupFormatter = /** @class */ (function (_super) { | ||
@@ -533,2 +557,3 @@ __extends(LookupFormatter, _super); | ||
| 'json-pretty': new JsonPretty(), | ||
| 'key-by': new KeyByFormatter(), | ||
| 'lookup': new LookupFormatter(), | ||
@@ -535,0 +560,0 @@ 'mod': new ModFormatter(), |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"formatters.core.js","sourceRoot":"","sources":["../../src/plugins/formatters.core.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context } from '../context';\nimport { partialMissing } from '../errors';\nimport { isTruthy } from '../node';\nimport { Formatter, FormatterTable } from '../plugin';\nimport { MacroCode, RootCode } from '../instructions';\nimport { MISSING_NODE, Node } from '../node';\nimport { Variable } from '../variable';\nimport { Type } from '../types';\nimport { executeTemplate } from '../exec';\nimport { splitVariable } from '../util';\nimport { format } from './util.format';\nimport { escapeHtmlAttributes, escapeScriptTags, slugify, truncate } from './util.string';\nimport utf8 from 'utf8';\n\nexport class ApplyFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n\n // Bail if we have no arguments or no engine defined.\n if (args.length === 0 || !ctx.engine) {\n first.set('');\n return;\n }\n\n // Get the name of the partial / macro.\n const name = args[0];\n\n let argvar: Variable | undefined;\n\n // Set whether the partial / macro's execution context should be private.\n // This will block variable resolution from proceeding past the current\n // stack frame.\n let privateContext = false;\n if (args.length > 1) {\n const argmap: any = {};\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n\n // Mark the context as private\n if (arg === 'private') {\n privateContext = true;\n continue;\n }\n\n // Parse the colon-delimited arguments into key-values\n const j = arg.indexOf('=');\n if (j !== -1) {\n const k = arg.slice(0, j);\n const v = arg.slice(j + 1);\n argmap[k] = v;\n }\n }\n\n // Pass formatter's argument to the macro / template\n argvar = ctx.newVariable('@args', new Node(argmap));\n }\n\n // Retrieve the partial / macro by name, If none defined, bail.\n const inst = ctx.getPartial(name);\n if (!Array.isArray(inst)) {\n ctx.error(partialMissing(name));\n first.set('');\n return;\n }\n\n if (ctx.enterPartial(name)) {\n // Execute the template and set the variable to the result.\n const text = executeTemplate(ctx, inst as RootCode | MacroCode, first.node, privateContext, argvar);\n first.set(text);\n ctx.exitPartial(name);\n } else {\n // Executing the partial failed, so set empty.\n first.set('');\n }\n }\n}\n\nexport class CountFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const node = first.node;\n if (node.type === Type.OBJECT) {\n first.set(Object.keys(node.value).length);\n } else if (node.type === Type.ARRAY) {\n first.set(node.value.length);\n } else {\n first.set(0);\n }\n }\n}\n\nexport class CycleFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asNumber();\n const count = args.length;\n let index = (value - 1) % count;\n if (index < 0) {\n index += count;\n }\n first.set(args[index]);\n }\n}\n\nexport class EncodeSpaceFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(value.replace(/\\s/g, ' '));\n }\n}\n\nexport class EncodeUriFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(encodeURI(value));\n }\n}\n\nexport class EncodeUriComponentFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(encodeURIComponent(value));\n }\n}\n\nexport class FormatFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const values = args.map(arg => {\n const names = splitVariable(arg);\n const node = ctx.resolve(names, first.node);\n return node.type === Type.NULL || node.type === Type.MISSING ? '' : node.value;\n });\n const fmt = first.node.asString();\n const result = format(fmt, values);\n first.set(result);\n }\n}\n\nexport class GetFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n let tmp = first.node;\n for (const arg of args) {\n const path = splitVariable(arg);\n const node = ctx.resolve(path);\n\n if (node.type === Type.MISSING) {\n tmp = MISSING_NODE;\n } else {\n\n const resolved: (number | string)[] =\n node.type === Type.ARRAY ? (node.value as (number | string)[]) :\n node.type === Type.NUMBER ? [node.asNumber()] : [node.asString()];\n\n tmp = tmp.path(resolved);\n }\n\n // Once we hit a missing node, no point continuing\n if (tmp.type === Type.MISSING) {\n break;\n }\n }\n first.set(tmp);\n }\n}\n\nexport class HtmlFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.replace({\n '&': '&',\n '<': '<',\n '>': '>'\n });\n first.set(value);\n }\n}\n\nexport class HtmlAttrFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n first.set(escapeHtmlAttributes(first.node.asString()));\n }\n}\n\nexport class IterFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const value = ctx.lookupStack('@index');\n vars[0].set(value.asString());\n }\n}\n\nexport class JsonFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n if (first.node.isMissing()) {\n first.set('');\n } else {\n const value = JSON.stringify(first.node.value);\n first.set(escapeScriptTags(value));\n }\n }\n}\n\nexport class JsonPretty extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n if (first.node.isMissing()) {\n first.set('');\n } else {\n const value = JSON.stringify(first.node.value, undefined, ' ');\n first.set(escapeScriptTags(value));\n }\n }\n}\n\nexport class LookupFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const key = args[0];\n if (key) {\n const ref = ctx.resolve(splitVariable(key));\n const value = ctx.resolve(splitVariable(ref.asString()));\n first.set(value);\n } else {\n first.set('');\n }\n }\n}\n\nexport class ModFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const n = first.node.asNumber();\n const divisor = parseInt(args[0], 10) || 2;\n first.set(n % (divisor && isFinite(divisor) ? divisor : 2));\n }\n}\n\nexport class OutputFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const value = args.join(' ');\n vars[0].set(value);\n }\n}\n\nexport class PluralizeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n let singular = '';\n let plural = 's';\n if (args.length === 1) {\n plural = args[0];\n } else if (args.length >= 2) {\n singular = args[0];\n plural = args[1];\n }\n\n const first = vars[0];\n const result = first.node.asNumber() === 1 ? singular : plural;\n first.set(result);\n }\n}\n\nexport class PropFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n let tmp = first.node;\n for (const arg of args) {\n const path = splitVariable(arg);\n tmp = tmp.path(path);\n if (tmp.type === Type.MISSING) {\n break;\n }\n }\n first.set(tmp);\n }\n}\n\nexport class RawFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n first.set(JSON.stringify(first.node.value));\n }\n}\n\nexport class RoundFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asNumber();\n first.set(Math.round(value));\n }\n}\n\nconst RE_SAFE = /<[^>]*?>/g;\n\nexport class SafeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n if (isTruthy(first.node)) {\n const value = first.node.asString();\n first.set(value.replace(RE_SAFE, ''));\n }\n }\n}\n\nexport class SlugifyFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(slugify(value));\n }\n}\n\nconst RE_SMARTY_1 = /(^|[-\\u2014\\\\s(\\[\"])'/gm;\nconst RE_SMARTY_APOS = /'/gm;\nconst RE_SMARTY_2 = /(^|[-\\u2014/\\[(\\u2018\\s])\"/gm;\nconst RE_SMARTY_QUOTE = /\"/gm;\nconst RE_SMARTY_MDASH = /--/gm;\n\nexport class SmartyPantsFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n let value = first.node.asString();\n value = value.replace(RE_SMARTY_1, '$1\\u2018');\n value = value.replace(RE_SMARTY_APOS, '\\u2019');\n value = value.replace(RE_SMARTY_2, '$1\\u201c');\n value = value.replace(RE_SMARTY_QUOTE, '\\u201d');\n value = value.replace(RE_SMARTY_MDASH, '\\u2014');\n first.set(value);\n }\n}\n\nexport class StrFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n switch (first.node.type) {\n case Type.OBJECT:\n case Type.ARRAY:\n first.set('');\n break;\n default:\n first.set(first.node.asString());\n break;\n }\n }\n}\n\nexport class TruncateFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n let limit = 100;\n let ellipsis = '...';\n if (args.length) {\n limit = parseInt(args[0], 10);\n }\n if (args.length > 1) {\n ellipsis = args[1];\n }\n\n if (isFinite(limit) && limit > 0) {\n const first = vars[0];\n let value = first.node.asString();\n value = truncate(value, limit, ellipsis);\n first.set(value);\n }\n }\n}\n\nexport class UrlEncodeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n const utf = utf8.encode(value);\n first.set(escape(utf));\n }\n}\n\nexport const CORE_FORMATTERS: FormatterTable = {\n 'apply': new ApplyFormatter(),\n 'count': new CountFormatter(),\n 'cycle': new CycleFormatter(),\n 'encode-space': new EncodeSpaceFormatter(),\n 'encode-uri': new EncodeUriFormatter(),\n 'encode-uri-component': new EncodeUriComponentFormatter(),\n 'format': new FormatFormatter(),\n 'get': new GetFormatter(),\n 'html': new HtmlFormatter(),\n 'htmlattr': new HtmlAttrFormatter(),\n 'htmltag': new HtmlAttrFormatter(), // same as \"htmlattr\"\n 'iter': new IterFormatter(),\n 'json': new JsonFormatter(),\n 'json-pretty': new JsonPretty(),\n 'lookup': new LookupFormatter(),\n 'mod': new ModFormatter(),\n 'output': new OutputFormatter(),\n 'pluralize': new PluralizeFormatter(),\n 'prop': new PropFormatter(),\n 'raw': new RawFormatter(),\n 'round': new RoundFormatter(),\n 'safe': new SafeFormatter(),\n 'slugify': new SlugifyFormatter(),\n 'smartypants': new SmartyPantsFormatter(),\n 'str': new StrFormatter(),\n 'truncate': new TruncateFormatter(),\n 'url-encode': new UrlEncodeFormatter(),\n};\n"]} | ||
| {"version":3,"file":"formatters.core.js","sourceRoot":"","sources":["../../src/plugins/formatters.core.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context } from '../context';\nimport { partialMissing } from '../errors';\nimport { isTruthy } from '../node';\nimport { Formatter, FormatterTable } from '../plugin';\nimport { MacroCode, RootCode } from '../instructions';\nimport { MISSING_NODE, Node } from '../node';\nimport { Variable } from '../variable';\nimport { Type } from '../types';\nimport { executeTemplate } from '../exec';\nimport { splitVariable } from '../util';\nimport { format } from './util.format';\nimport { escapeHtmlAttributes, escapeScriptTags, slugify, truncate } from './util.string';\nimport utf8 from 'utf8';\n\nexport class ApplyFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n\n // Bail if we have no arguments or no engine defined.\n if (args.length === 0 || !ctx.engine) {\n first.set('');\n return;\n }\n\n // Get the name of the partial / macro.\n const name = args[0];\n\n let argvar: Variable | undefined;\n\n // Set whether the partial / macro's execution context should be private.\n // This will block variable resolution from proceeding past the current\n // stack frame.\n let privateContext = false;\n if (args.length > 1) {\n const argmap: any = {};\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n\n // Mark the context as private\n if (arg === 'private') {\n privateContext = true;\n continue;\n }\n\n // Parse the colon-delimited arguments into key-values\n const j = arg.indexOf('=');\n if (j !== -1) {\n const k = arg.slice(0, j);\n const v = arg.slice(j + 1);\n argmap[k] = v;\n }\n }\n\n // Pass formatter's argument to the macro / template\n argvar = ctx.newVariable('@args', new Node(argmap));\n }\n\n // Retrieve the partial / macro by name, If none defined, bail.\n const inst = ctx.getPartial(name);\n if (!Array.isArray(inst)) {\n ctx.error(partialMissing(name));\n first.set('');\n return;\n }\n\n if (ctx.enterPartial(name)) {\n // Execute the template and set the variable to the result.\n const text = executeTemplate(ctx, inst as RootCode | MacroCode, first.node, privateContext, argvar);\n first.set(text);\n ctx.exitPartial(name);\n } else {\n // Executing the partial failed, so set empty.\n first.set('');\n }\n }\n}\n\nexport class CountFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const node = first.node;\n if (node.type === Type.OBJECT) {\n first.set(Object.keys(node.value).length);\n } else if (node.type === Type.ARRAY) {\n first.set(node.value.length);\n } else {\n first.set(0);\n }\n }\n}\n\nexport class CycleFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asNumber();\n const count = args.length;\n let index = (value - 1) % count;\n if (index < 0) {\n index += count;\n }\n first.set(args[index]);\n }\n}\n\nexport class EncodeSpaceFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(value.replace(/\\s/g, ' '));\n }\n}\n\nexport class EncodeUriFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(encodeURI(value));\n }\n}\n\nexport class EncodeUriComponentFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(encodeURIComponent(value));\n }\n}\n\nexport class FormatFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const values = args.map(arg => {\n const names = splitVariable(arg);\n const node = ctx.resolve(names, first.node);\n return node.type === Type.NULL || node.type === Type.MISSING ? '' : node.value;\n });\n const fmt = first.node.asString();\n const result = format(fmt, values);\n first.set(result);\n }\n}\n\nexport class GetFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n let tmp = first.node;\n for (const arg of args) {\n const path = splitVariable(arg);\n const node = ctx.resolve(path);\n\n if (node.type === Type.MISSING) {\n tmp = MISSING_NODE;\n } else {\n\n const resolved: (number | string)[] =\n node.type === Type.ARRAY ? (node.value as (number | string)[]) :\n node.type === Type.NUMBER ? [node.asNumber()] : [node.asString()];\n\n tmp = tmp.path(resolved);\n }\n\n // Once we hit a missing node, no point continuing\n if (tmp.type === Type.MISSING) {\n break;\n }\n }\n first.set(tmp);\n }\n}\n\nexport class HtmlFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.replace({\n '&': '&',\n '<': '<',\n '>': '>'\n });\n first.set(value);\n }\n}\n\nexport class HtmlAttrFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n first.set(escapeHtmlAttributes(first.node.asString()));\n }\n}\n\nexport class IterFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const value = ctx.lookupStack('@index');\n vars[0].set(value.asString());\n }\n}\n\nexport class JsonFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n if (first.node.isMissing()) {\n first.set('');\n } else {\n const value = JSON.stringify(first.node.value);\n first.set(escapeScriptTags(value));\n }\n }\n}\n\nexport class JsonPretty extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n if (first.node.isMissing()) {\n first.set('');\n } else {\n const value = JSON.stringify(first.node.value, undefined, ' ');\n first.set(escapeScriptTags(value));\n }\n }\n}\n\nexport class KeyByFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const path = args[0];\n const keyByMap: { [key: string]: any } = {};\n\n if (first.node.type === Type.ARRAY && path) {\n const splitPath = splitVariable(path);\n\n for (const val of first.get()) {\n const nodeAtPath = new Node(val).path(splitPath);\n\n if (nodeAtPath.type !== Type.MISSING) {\n keyByMap[nodeAtPath.value] = val;\n }\n }\n }\n\n first.set(keyByMap);\n }\n}\n\nexport class LookupFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const key = args[0];\n if (key) {\n const ref = ctx.resolve(splitVariable(key));\n const value = ctx.resolve(splitVariable(ref.asString()));\n first.set(value);\n } else {\n first.set('');\n }\n }\n}\n\nexport class ModFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const n = first.node.asNumber();\n const divisor = parseInt(args[0], 10) || 2;\n first.set(n % (divisor && isFinite(divisor) ? divisor : 2));\n }\n}\n\nexport class OutputFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const value = args.join(' ');\n vars[0].set(value);\n }\n}\n\nexport class PluralizeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n let singular = '';\n let plural = 's';\n if (args.length === 1) {\n plural = args[0];\n } else if (args.length >= 2) {\n singular = args[0];\n plural = args[1];\n }\n\n const first = vars[0];\n const result = first.node.asNumber() === 1 ? singular : plural;\n first.set(result);\n }\n}\n\nexport class PropFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n let tmp = first.node;\n for (const arg of args) {\n const path = splitVariable(arg);\n tmp = tmp.path(path);\n if (tmp.type === Type.MISSING) {\n break;\n }\n }\n first.set(tmp);\n }\n}\n\nexport class RawFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n first.set(JSON.stringify(first.node.value));\n }\n}\n\nexport class RoundFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asNumber();\n first.set(Math.round(value));\n }\n}\n\nconst RE_SAFE = /<[^>]*?>/g;\n\nexport class SafeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n if (isTruthy(first.node)) {\n const value = first.node.asString();\n first.set(value.replace(RE_SAFE, ''));\n }\n }\n}\n\nexport class SlugifyFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n first.set(slugify(value));\n }\n}\n\nconst RE_SMARTY_1 = /(^|[-\\u2014\\\\s(\\[\"])'/gm;\nconst RE_SMARTY_APOS = /'/gm;\nconst RE_SMARTY_2 = /(^|[-\\u2014/\\[(\\u2018\\s])\"/gm;\nconst RE_SMARTY_QUOTE = /\"/gm;\nconst RE_SMARTY_MDASH = /--/gm;\n\nexport class SmartyPantsFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n let value = first.node.asString();\n value = value.replace(RE_SMARTY_1, '$1\\u2018');\n value = value.replace(RE_SMARTY_APOS, '\\u2019');\n value = value.replace(RE_SMARTY_2, '$1\\u201c');\n value = value.replace(RE_SMARTY_QUOTE, '\\u201d');\n value = value.replace(RE_SMARTY_MDASH, '\\u2014');\n first.set(value);\n }\n}\n\nexport class StrFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n switch (first.node.type) {\n case Type.OBJECT:\n case Type.ARRAY:\n first.set('');\n break;\n default:\n first.set(first.node.asString());\n break;\n }\n }\n}\n\nexport class TruncateFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n let limit = 100;\n let ellipsis = '...';\n if (args.length) {\n limit = parseInt(args[0], 10);\n }\n if (args.length > 1) {\n ellipsis = args[1];\n }\n\n if (isFinite(limit) && limit > 0) {\n const first = vars[0];\n let value = first.node.asString();\n value = truncate(value, limit, ellipsis);\n first.set(value);\n }\n }\n}\n\nexport class UrlEncodeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const value = first.node.asString();\n const utf = utf8.encode(value);\n first.set(escape(utf));\n }\n}\n\nexport const CORE_FORMATTERS: FormatterTable = {\n 'apply': new ApplyFormatter(),\n 'count': new CountFormatter(),\n 'cycle': new CycleFormatter(),\n 'encode-space': new EncodeSpaceFormatter(),\n 'encode-uri': new EncodeUriFormatter(),\n 'encode-uri-component': new EncodeUriComponentFormatter(),\n 'format': new FormatFormatter(),\n 'get': new GetFormatter(),\n 'html': new HtmlFormatter(),\n 'htmlattr': new HtmlAttrFormatter(),\n 'htmltag': new HtmlAttrFormatter(), // same as \"htmlattr\"\n 'iter': new IterFormatter(),\n 'json': new JsonFormatter(),\n 'json-pretty': new JsonPretty(),\n 'key-by': new KeyByFormatter(),\n 'lookup': new LookupFormatter(),\n 'mod': new ModFormatter(),\n 'output': new OutputFormatter(),\n 'pluralize': new PluralizeFormatter(),\n 'prop': new PropFormatter(),\n 'raw': new RawFormatter(),\n 'round': new RoundFormatter(),\n 'safe': new SafeFormatter(),\n 'slugify': new SlugifyFormatter(),\n 'smartypants': new SmartyPantsFormatter(),\n 'str': new StrFormatter(),\n 'truncate': new TruncateFormatter(),\n 'url-encode': new UrlEncodeFormatter(),\n};\n"]} |
+1
-1
| { | ||
| "name": "@squarespace/template-engine", | ||
| "version": "2.8.43", | ||
| "version": "2.8.44", | ||
| "description": "Squarespace template engine", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
2198814
0.22%26948
0.21%