@squarespace/template-engine
Advanced tools
@@ -154,3 +154,3 @@ var __extends = (this && this.__extends) || (function () { | ||
| export { MessageFormatterImpl }; | ||
| var useCLDRMode = function (ctx) { return isTruthy(ctx.resolve(['website', 'useCLDRMoneyFormat'])); }; | ||
| var useCLDRMode = function (ctx) { return isTruthy(ctx.resolve(['featureFlags', 'useCLDRMoneyFormat'])); }; | ||
| var MoneyFormatter = /** @class */ (function (_super) { | ||
@@ -157,0 +157,0 @@ __extends(MoneyFormatter, _super); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"formatters.i18n.js","sourceRoot":"","sources":["../../src/plugins/formatters.i18n.ts"],"names":[],"mappings":"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","sourcesContent":["import { CurrencyType } from '@phensley/cldr-core';\n\nimport { Context } from '../context';\nimport { Variable } from '../variable';\nimport { FormatterTable } from '../plugin';\nimport { isTruthy } from '../node';\nimport { Formatter } from '../plugin';\nimport { getTimeZone } from './util.timezone';\nimport { parseDecimal } from './util.i18n';\nimport { currencyOptions, datetimeOptions, decimalOptions, intervalOptions, relativetimeOptions } from './options';\nimport { splitVariable } from '../util';\nimport { humanizeDate } from './util.content';\n\nexport class DatetimeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const date = first.node.asNumber();\n if (isNaN(date)) {\n first.set('');\n return;\n }\n\n const opts = datetimeOptions(args);\n const zoneId = getTimeZone(ctx);\n const res = cldr.Calendars.formatDate({ date, zoneId }, opts);\n first.set(res);\n }\n}\n\nexport class DatetimeIntervalformatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const cldr = ctx.cldr;\n if (!cldr || vars.length < 2) {\n vars[0].set('');\n return;\n }\n\n const n0 = vars[0].node.asNumber();\n const n1 = vars[1].node.asNumber();\n if (!isFinite(n0) || !isFinite(n1)) {\n vars[0].set('');\n return;\n }\n\n const zoneId = getTimeZone(ctx);\n const start = { date: n0, zoneId };\n const end = { date: n1, zoneId };\n const opts = intervalOptions(args);\n const res = cldr.Calendars.formatDateInterval(start, end, opts);\n vars[0].set(res);\n }\n}\n\n// TODO: datetimefield DEPRECATED\n\nexport class DecimalFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const node = first.node.asString();\n const opts = decimalOptions(args);\n const num = parseDecimal(node);\n if (num !== undefined) {\n const res = cldr.Numbers.formatDecimal(num, opts);\n first.set(res);\n } else {\n first.set('');\n }\n }\n}\n\n// TODO: i18n-money-format (Legacy)\n\n// Find the key/value delimiter in a string.\nconst delimiter = (s: string): number => {\n for (let i = 0; i < s.length; i++) {\n const c = s[i];\n // Either ':' or '=' can delimit arguments\n if (c === ':' || c === '=') {\n return i;\n }\n }\n return -1;\n};\n\nexport class MessageFormatterImpl extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const positional: any[] = [];\n const keyword: { [name: string]: any } = {};\n args.forEach((arg) => {\n const parent = ctx.frame().parent;\n const i = delimiter(arg);\n if (i === -1) {\n const _arg = ctx.resolveFrom(splitVariable(arg), parent ? parent : ctx.frame());\n positional.push(_arg);\n } else {\n const key = arg.slice(0, i);\n const val = arg.slice(i + 1);\n const _val = ctx.resolveFrom(splitVariable(val), parent ? parent : ctx.frame());\n // Index the argument both as a keyword and positional\n keyword[key] = _val;\n positional.push(_val);\n }\n });\n\n const { formatter } = ctx;\n const zoneId = getTimeZone(ctx);\n formatter!.setTimeZone(zoneId);\n\n const msg = first.node.asString();\n const result = formatter!.formatter.format(msg, positional, keyword);\n first.set(result);\n }\n}\n\nconst useCLDRMode = (ctx: Context) => isTruthy(ctx.resolve(['website', 'useCLDRMoneyFormat']));\n\nexport class MoneyFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const node = first.node;\n let decimalValue = node.path(['decimalValue']);\n let currencyNode = node.path(['currencyCode']);\n if (decimalValue.isMissing() || currencyNode.isMissing()) {\n if (useCLDRMode(ctx)) {\n decimalValue = node.path(['value']);\n currencyNode = node.path(['currency']);\n }\n\n // No valid money node found.\n if (decimalValue.isMissing() || currencyNode.isMissing()) {\n first.set('');\n return;\n }\n }\n\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const code = currencyNode.asString();\n const decimal = parseDecimal(decimalValue.asString());\n if (decimal !== undefined) {\n const opts = currencyOptions(args);\n const res = cldr.Numbers.formatCurrency(decimal, code as CurrencyType, opts);\n first.set(res);\n } else {\n first.set('');\n }\n }\n}\n\nexport class RelativeTimeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const { cldr } = ctx;\n if (!cldr) {\n first.set('');\n return;\n }\n let s = ctx.now === undefined ? new Date().getTime() : ctx.now;\n let e = first.node.asNumber();\n if (vars.length > 1) {\n s = e;\n e = vars[1].node.asNumber();\n }\n if (!isFinite(s) || !isFinite(e)) {\n first.set('');\n return;\n }\n const start = cldr.Calendars.toGregorianDate({ date: s });\n const end = cldr.Calendars.toGregorianDate({ date: e });\n\n const opts = relativetimeOptions(args);\n const res = cldr.Calendars.formatRelativeTime(start, end, opts);\n first.set(res);\n }\n}\n\nexport class TimeSinceFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const n = first.node.asNumber();\n const { cldr } = ctx;\n if (!cldr || !isFinite(n)) {\n first.set('Invalid date.');\n return;\n }\n const now = ctx.now === undefined ? new Date().getTime() : ctx.now;\n const base = cldr.Calendars.toGregorianDate({ date: now });\n const date = cldr.Calendars.toGregorianDate({ date: n });\n\n const delta = base.unixEpoch() - date.unixEpoch();\n const res = humanizeDate(delta, false);\n const html = `<span class=\"timesince\" data-date=\"${n}\">${res}</span>`;\n first.set(html);\n }\n}\n\n// TODO: unit\n\nexport const I18N_FORMATTERS: FormatterTable = {\n datetime: new DatetimeFormatter(),\n 'datetime-interval': new DatetimeIntervalformatter(),\n decimal: new DecimalFormatter(),\n message: new MessageFormatterImpl(),\n money: new MoneyFormatter(),\n plural: new MessageFormatterImpl(),\n 'relative-time': new RelativeTimeFormatter(),\n timesince: new TimeSinceFormatter(),\n};\n"]} | ||
| {"version":3,"file":"formatters.i18n.js","sourceRoot":"","sources":["../../src/plugins/formatters.i18n.ts"],"names":[],"mappings":"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","sourcesContent":["import { CurrencyType } from '@phensley/cldr-core';\n\nimport { Context } from '../context';\nimport { Variable } from '../variable';\nimport { FormatterTable } from '../plugin';\nimport { isTruthy } from '../node';\nimport { Formatter } from '../plugin';\nimport { getTimeZone } from './util.timezone';\nimport { parseDecimal } from './util.i18n';\nimport { currencyOptions, datetimeOptions, decimalOptions, intervalOptions, relativetimeOptions } from './options';\nimport { splitVariable } from '../util';\nimport { humanizeDate } from './util.content';\n\nexport class DatetimeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const date = first.node.asNumber();\n if (isNaN(date)) {\n first.set('');\n return;\n }\n\n const opts = datetimeOptions(args);\n const zoneId = getTimeZone(ctx);\n const res = cldr.Calendars.formatDate({ date, zoneId }, opts);\n first.set(res);\n }\n}\n\nexport class DatetimeIntervalformatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const cldr = ctx.cldr;\n if (!cldr || vars.length < 2) {\n vars[0].set('');\n return;\n }\n\n const n0 = vars[0].node.asNumber();\n const n1 = vars[1].node.asNumber();\n if (!isFinite(n0) || !isFinite(n1)) {\n vars[0].set('');\n return;\n }\n\n const zoneId = getTimeZone(ctx);\n const start = { date: n0, zoneId };\n const end = { date: n1, zoneId };\n const opts = intervalOptions(args);\n const res = cldr.Calendars.formatDateInterval(start, end, opts);\n vars[0].set(res);\n }\n}\n\n// TODO: datetimefield DEPRECATED\n\nexport class DecimalFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const node = first.node.asString();\n const opts = decimalOptions(args);\n const num = parseDecimal(node);\n if (num !== undefined) {\n const res = cldr.Numbers.formatDecimal(num, opts);\n first.set(res);\n } else {\n first.set('');\n }\n }\n}\n\n// TODO: i18n-money-format (Legacy)\n\n// Find the key/value delimiter in a string.\nconst delimiter = (s: string): number => {\n for (let i = 0; i < s.length; i++) {\n const c = s[i];\n // Either ':' or '=' can delimit arguments\n if (c === ':' || c === '=') {\n return i;\n }\n }\n return -1;\n};\n\nexport class MessageFormatterImpl extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const positional: any[] = [];\n const keyword: { [name: string]: any } = {};\n args.forEach((arg) => {\n const parent = ctx.frame().parent;\n const i = delimiter(arg);\n if (i === -1) {\n const _arg = ctx.resolveFrom(splitVariable(arg), parent ? parent : ctx.frame());\n positional.push(_arg);\n } else {\n const key = arg.slice(0, i);\n const val = arg.slice(i + 1);\n const _val = ctx.resolveFrom(splitVariable(val), parent ? parent : ctx.frame());\n // Index the argument both as a keyword and positional\n keyword[key] = _val;\n positional.push(_val);\n }\n });\n\n const { formatter } = ctx;\n const zoneId = getTimeZone(ctx);\n formatter!.setTimeZone(zoneId);\n\n const msg = first.node.asString();\n const result = formatter!.formatter.format(msg, positional, keyword);\n first.set(result);\n }\n}\n\nconst useCLDRMode = (ctx: Context) => isTruthy(ctx.resolve(['featureFlags', 'useCLDRMoneyFormat']));\n\nexport class MoneyFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const node = first.node;\n let decimalValue = node.path(['decimalValue']);\n let currencyNode = node.path(['currencyCode']);\n if (decimalValue.isMissing() || currencyNode.isMissing()) {\n if (useCLDRMode(ctx)) {\n decimalValue = node.path(['value']);\n currencyNode = node.path(['currency']);\n }\n\n // No valid money node found.\n if (decimalValue.isMissing() || currencyNode.isMissing()) {\n first.set('');\n return;\n }\n }\n\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const code = currencyNode.asString();\n const decimal = parseDecimal(decimalValue.asString());\n if (decimal !== undefined) {\n const opts = currencyOptions(args);\n const res = cldr.Numbers.formatCurrency(decimal, code as CurrencyType, opts);\n first.set(res);\n } else {\n first.set('');\n }\n }\n}\n\nexport class RelativeTimeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const { cldr } = ctx;\n if (!cldr) {\n first.set('');\n return;\n }\n let s = ctx.now === undefined ? new Date().getTime() : ctx.now;\n let e = first.node.asNumber();\n if (vars.length > 1) {\n s = e;\n e = vars[1].node.asNumber();\n }\n if (!isFinite(s) || !isFinite(e)) {\n first.set('');\n return;\n }\n const start = cldr.Calendars.toGregorianDate({ date: s });\n const end = cldr.Calendars.toGregorianDate({ date: e });\n\n const opts = relativetimeOptions(args);\n const res = cldr.Calendars.formatRelativeTime(start, end, opts);\n first.set(res);\n }\n}\n\nexport class TimeSinceFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const n = first.node.asNumber();\n const { cldr } = ctx;\n if (!cldr || !isFinite(n)) {\n first.set('Invalid date.');\n return;\n }\n const now = ctx.now === undefined ? new Date().getTime() : ctx.now;\n const base = cldr.Calendars.toGregorianDate({ date: now });\n const date = cldr.Calendars.toGregorianDate({ date: n });\n\n const delta = base.unixEpoch() - date.unixEpoch();\n const res = humanizeDate(delta, false);\n const html = `<span class=\"timesince\" data-date=\"${n}\">${res}</span>`;\n first.set(html);\n }\n}\n\n// TODO: unit\n\nexport const I18N_FORMATTERS: FormatterTable = {\n datetime: new DatetimeFormatter(),\n 'datetime-interval': new DatetimeIntervalformatter(),\n decimal: new DecimalFormatter(),\n message: new MessageFormatterImpl(),\n money: new MoneyFormatter(),\n plural: new MessageFormatterImpl(),\n 'relative-time': new RelativeTimeFormatter(),\n timesince: new TimeSinceFormatter(),\n};\n"]} |
@@ -157,3 +157,3 @@ "use strict"; | ||
| exports.MessageFormatterImpl = MessageFormatterImpl; | ||
| var useCLDRMode = function (ctx) { return (0, node_1.isTruthy)(ctx.resolve(['website', 'useCLDRMoneyFormat'])); }; | ||
| var useCLDRMode = function (ctx) { return (0, node_1.isTruthy)(ctx.resolve(['featureFlags', 'useCLDRMoneyFormat'])); }; | ||
| var MoneyFormatter = /** @class */ (function (_super) { | ||
@@ -160,0 +160,0 @@ __extends(MoneyFormatter, _super); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"formatters.i18n.js","sourceRoot":"","sources":["../../src/plugins/formatters.i18n.ts"],"names":[],"mappings":"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","sourcesContent":["import { CurrencyType } from '@phensley/cldr-core';\n\nimport { Context } from '../context';\nimport { Variable } from '../variable';\nimport { FormatterTable } from '../plugin';\nimport { isTruthy } from '../node';\nimport { Formatter } from '../plugin';\nimport { getTimeZone } from './util.timezone';\nimport { parseDecimal } from './util.i18n';\nimport { currencyOptions, datetimeOptions, decimalOptions, intervalOptions, relativetimeOptions } from './options';\nimport { splitVariable } from '../util';\nimport { humanizeDate } from './util.content';\n\nexport class DatetimeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const date = first.node.asNumber();\n if (isNaN(date)) {\n first.set('');\n return;\n }\n\n const opts = datetimeOptions(args);\n const zoneId = getTimeZone(ctx);\n const res = cldr.Calendars.formatDate({ date, zoneId }, opts);\n first.set(res);\n }\n}\n\nexport class DatetimeIntervalformatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const cldr = ctx.cldr;\n if (!cldr || vars.length < 2) {\n vars[0].set('');\n return;\n }\n\n const n0 = vars[0].node.asNumber();\n const n1 = vars[1].node.asNumber();\n if (!isFinite(n0) || !isFinite(n1)) {\n vars[0].set('');\n return;\n }\n\n const zoneId = getTimeZone(ctx);\n const start = { date: n0, zoneId };\n const end = { date: n1, zoneId };\n const opts = intervalOptions(args);\n const res = cldr.Calendars.formatDateInterval(start, end, opts);\n vars[0].set(res);\n }\n}\n\n// TODO: datetimefield DEPRECATED\n\nexport class DecimalFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const node = first.node.asString();\n const opts = decimalOptions(args);\n const num = parseDecimal(node);\n if (num !== undefined) {\n const res = cldr.Numbers.formatDecimal(num, opts);\n first.set(res);\n } else {\n first.set('');\n }\n }\n}\n\n// TODO: i18n-money-format (Legacy)\n\n// Find the key/value delimiter in a string.\nconst delimiter = (s: string): number => {\n for (let i = 0; i < s.length; i++) {\n const c = s[i];\n // Either ':' or '=' can delimit arguments\n if (c === ':' || c === '=') {\n return i;\n }\n }\n return -1;\n};\n\nexport class MessageFormatterImpl extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const positional: any[] = [];\n const keyword: { [name: string]: any } = {};\n args.forEach((arg) => {\n const parent = ctx.frame().parent;\n const i = delimiter(arg);\n if (i === -1) {\n const _arg = ctx.resolveFrom(splitVariable(arg), parent ? parent : ctx.frame());\n positional.push(_arg);\n } else {\n const key = arg.slice(0, i);\n const val = arg.slice(i + 1);\n const _val = ctx.resolveFrom(splitVariable(val), parent ? parent : ctx.frame());\n // Index the argument both as a keyword and positional\n keyword[key] = _val;\n positional.push(_val);\n }\n });\n\n const { formatter } = ctx;\n const zoneId = getTimeZone(ctx);\n formatter!.setTimeZone(zoneId);\n\n const msg = first.node.asString();\n const result = formatter!.formatter.format(msg, positional, keyword);\n first.set(result);\n }\n}\n\nconst useCLDRMode = (ctx: Context) => isTruthy(ctx.resolve(['website', 'useCLDRMoneyFormat']));\n\nexport class MoneyFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const node = first.node;\n let decimalValue = node.path(['decimalValue']);\n let currencyNode = node.path(['currencyCode']);\n if (decimalValue.isMissing() || currencyNode.isMissing()) {\n if (useCLDRMode(ctx)) {\n decimalValue = node.path(['value']);\n currencyNode = node.path(['currency']);\n }\n\n // No valid money node found.\n if (decimalValue.isMissing() || currencyNode.isMissing()) {\n first.set('');\n return;\n }\n }\n\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const code = currencyNode.asString();\n const decimal = parseDecimal(decimalValue.asString());\n if (decimal !== undefined) {\n const opts = currencyOptions(args);\n const res = cldr.Numbers.formatCurrency(decimal, code as CurrencyType, opts);\n first.set(res);\n } else {\n first.set('');\n }\n }\n}\n\nexport class RelativeTimeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const { cldr } = ctx;\n if (!cldr) {\n first.set('');\n return;\n }\n let s = ctx.now === undefined ? new Date().getTime() : ctx.now;\n let e = first.node.asNumber();\n if (vars.length > 1) {\n s = e;\n e = vars[1].node.asNumber();\n }\n if (!isFinite(s) || !isFinite(e)) {\n first.set('');\n return;\n }\n const start = cldr.Calendars.toGregorianDate({ date: s });\n const end = cldr.Calendars.toGregorianDate({ date: e });\n\n const opts = relativetimeOptions(args);\n const res = cldr.Calendars.formatRelativeTime(start, end, opts);\n first.set(res);\n }\n}\n\nexport class TimeSinceFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const n = first.node.asNumber();\n const { cldr } = ctx;\n if (!cldr || !isFinite(n)) {\n first.set('Invalid date.');\n return;\n }\n const now = ctx.now === undefined ? new Date().getTime() : ctx.now;\n const base = cldr.Calendars.toGregorianDate({ date: now });\n const date = cldr.Calendars.toGregorianDate({ date: n });\n\n const delta = base.unixEpoch() - date.unixEpoch();\n const res = humanizeDate(delta, false);\n const html = `<span class=\"timesince\" data-date=\"${n}\">${res}</span>`;\n first.set(html);\n }\n}\n\n// TODO: unit\n\nexport const I18N_FORMATTERS: FormatterTable = {\n datetime: new DatetimeFormatter(),\n 'datetime-interval': new DatetimeIntervalformatter(),\n decimal: new DecimalFormatter(),\n message: new MessageFormatterImpl(),\n money: new MoneyFormatter(),\n plural: new MessageFormatterImpl(),\n 'relative-time': new RelativeTimeFormatter(),\n timesince: new TimeSinceFormatter(),\n};\n"]} | ||
| {"version":3,"file":"formatters.i18n.js","sourceRoot":"","sources":["../../src/plugins/formatters.i18n.ts"],"names":[],"mappings":"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","sourcesContent":["import { CurrencyType } from '@phensley/cldr-core';\n\nimport { Context } from '../context';\nimport { Variable } from '../variable';\nimport { FormatterTable } from '../plugin';\nimport { isTruthy } from '../node';\nimport { Formatter } from '../plugin';\nimport { getTimeZone } from './util.timezone';\nimport { parseDecimal } from './util.i18n';\nimport { currencyOptions, datetimeOptions, decimalOptions, intervalOptions, relativetimeOptions } from './options';\nimport { splitVariable } from '../util';\nimport { humanizeDate } from './util.content';\n\nexport class DatetimeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const date = first.node.asNumber();\n if (isNaN(date)) {\n first.set('');\n return;\n }\n\n const opts = datetimeOptions(args);\n const zoneId = getTimeZone(ctx);\n const res = cldr.Calendars.formatDate({ date, zoneId }, opts);\n first.set(res);\n }\n}\n\nexport class DatetimeIntervalformatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const cldr = ctx.cldr;\n if (!cldr || vars.length < 2) {\n vars[0].set('');\n return;\n }\n\n const n0 = vars[0].node.asNumber();\n const n1 = vars[1].node.asNumber();\n if (!isFinite(n0) || !isFinite(n1)) {\n vars[0].set('');\n return;\n }\n\n const zoneId = getTimeZone(ctx);\n const start = { date: n0, zoneId };\n const end = { date: n1, zoneId };\n const opts = intervalOptions(args);\n const res = cldr.Calendars.formatDateInterval(start, end, opts);\n vars[0].set(res);\n }\n}\n\n// TODO: datetimefield DEPRECATED\n\nexport class DecimalFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const node = first.node.asString();\n const opts = decimalOptions(args);\n const num = parseDecimal(node);\n if (num !== undefined) {\n const res = cldr.Numbers.formatDecimal(num, opts);\n first.set(res);\n } else {\n first.set('');\n }\n }\n}\n\n// TODO: i18n-money-format (Legacy)\n\n// Find the key/value delimiter in a string.\nconst delimiter = (s: string): number => {\n for (let i = 0; i < s.length; i++) {\n const c = s[i];\n // Either ':' or '=' can delimit arguments\n if (c === ':' || c === '=') {\n return i;\n }\n }\n return -1;\n};\n\nexport class MessageFormatterImpl extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const positional: any[] = [];\n const keyword: { [name: string]: any } = {};\n args.forEach((arg) => {\n const parent = ctx.frame().parent;\n const i = delimiter(arg);\n if (i === -1) {\n const _arg = ctx.resolveFrom(splitVariable(arg), parent ? parent : ctx.frame());\n positional.push(_arg);\n } else {\n const key = arg.slice(0, i);\n const val = arg.slice(i + 1);\n const _val = ctx.resolveFrom(splitVariable(val), parent ? parent : ctx.frame());\n // Index the argument both as a keyword and positional\n keyword[key] = _val;\n positional.push(_val);\n }\n });\n\n const { formatter } = ctx;\n const zoneId = getTimeZone(ctx);\n formatter!.setTimeZone(zoneId);\n\n const msg = first.node.asString();\n const result = formatter!.formatter.format(msg, positional, keyword);\n first.set(result);\n }\n}\n\nconst useCLDRMode = (ctx: Context) => isTruthy(ctx.resolve(['featureFlags', 'useCLDRMoneyFormat']));\n\nexport class MoneyFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const node = first.node;\n let decimalValue = node.path(['decimalValue']);\n let currencyNode = node.path(['currencyCode']);\n if (decimalValue.isMissing() || currencyNode.isMissing()) {\n if (useCLDRMode(ctx)) {\n decimalValue = node.path(['value']);\n currencyNode = node.path(['currency']);\n }\n\n // No valid money node found.\n if (decimalValue.isMissing() || currencyNode.isMissing()) {\n first.set('');\n return;\n }\n }\n\n const cldr = ctx.cldr;\n if (!cldr) {\n first.set('');\n return;\n }\n\n const code = currencyNode.asString();\n const decimal = parseDecimal(decimalValue.asString());\n if (decimal !== undefined) {\n const opts = currencyOptions(args);\n const res = cldr.Numbers.formatCurrency(decimal, code as CurrencyType, opts);\n first.set(res);\n } else {\n first.set('');\n }\n }\n}\n\nexport class RelativeTimeFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const { cldr } = ctx;\n if (!cldr) {\n first.set('');\n return;\n }\n let s = ctx.now === undefined ? new Date().getTime() : ctx.now;\n let e = first.node.asNumber();\n if (vars.length > 1) {\n s = e;\n e = vars[1].node.asNumber();\n }\n if (!isFinite(s) || !isFinite(e)) {\n first.set('');\n return;\n }\n const start = cldr.Calendars.toGregorianDate({ date: s });\n const end = cldr.Calendars.toGregorianDate({ date: e });\n\n const opts = relativetimeOptions(args);\n const res = cldr.Calendars.formatRelativeTime(start, end, opts);\n first.set(res);\n }\n}\n\nexport class TimeSinceFormatter extends Formatter {\n apply(args: string[], vars: Variable[], ctx: Context): void {\n const first = vars[0];\n const n = first.node.asNumber();\n const { cldr } = ctx;\n if (!cldr || !isFinite(n)) {\n first.set('Invalid date.');\n return;\n }\n const now = ctx.now === undefined ? new Date().getTime() : ctx.now;\n const base = cldr.Calendars.toGregorianDate({ date: now });\n const date = cldr.Calendars.toGregorianDate({ date: n });\n\n const delta = base.unixEpoch() - date.unixEpoch();\n const res = humanizeDate(delta, false);\n const html = `<span class=\"timesince\" data-date=\"${n}\">${res}</span>`;\n first.set(html);\n }\n}\n\n// TODO: unit\n\nexport const I18N_FORMATTERS: FormatterTable = {\n datetime: new DatetimeFormatter(),\n 'datetime-interval': new DatetimeIntervalformatter(),\n decimal: new DecimalFormatter(),\n message: new MessageFormatterImpl(),\n money: new MoneyFormatter(),\n plural: new MessageFormatterImpl(),\n 'relative-time': new RelativeTimeFormatter(),\n timesince: new TimeSinceFormatter(),\n};\n"]} |
+1
-1
| { | ||
| "name": "@squarespace/template-engine", | ||
| "version": "2.10.5", | ||
| "version": "2.10.6", | ||
| "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
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
2260489
0