@voyantjs/utils 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,14 @@
1
1
  export type StructuredTemplateBodyFormat = "html" | "markdown" | "lexical_json";
2
- export declare function renderMustacheTemplate(body: string, variables: Record<string, unknown>): string;
3
- export declare function renderStringTemplate(body: string, variables: Record<string, unknown>): string;
4
- export declare function renderStructuredTemplate(body: string, bodyFormat: StructuredTemplateBodyFormat, variables: Record<string, unknown>): string;
2
+ /**
3
+ * Optional render hooks. `missingValuePlaceholder` substitutes a
4
+ * literal (typically `"-"`) for any output tag whose resolved value is
5
+ * null / undefined / empty-string. Numbers (including 0) and
6
+ * booleans are stringified as-is — they aren't "missing".
7
+ */
8
+ export interface RenderTemplateOptions {
9
+ missingValuePlaceholder?: string;
10
+ }
11
+ export declare function renderMustacheTemplate(body: string, variables: Record<string, unknown>, options?: RenderTemplateOptions): string;
12
+ export declare function renderStringTemplate(body: string, variables: Record<string, unknown>, options?: RenderTemplateOptions): string;
13
+ export declare function renderStructuredTemplate(body: string, bodyFormat: StructuredTemplateBodyFormat, variables: Record<string, unknown>, options?: RenderTemplateOptions): string;
5
14
  //# sourceMappingURL=template-renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"template-renderer.d.ts","sourceRoot":"","sources":["../src/template-renderer.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,4BAA4B,GAAG,MAAM,GAAG,UAAU,GAAG,cAAc,CAAA;AAkH/E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAK/F;AAMD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAM7F;AAaD,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,4BAA4B,EACxC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,MAAM,CA6BR"}
1
+ {"version":3,"file":"template-renderer.d.ts","sourceRoot":"","sources":["../src/template-renderer.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,4BAA4B,GAAG,MAAM,GAAG,UAAU,GAAG,cAAc,CAAA;AA+I/E;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC;AAgCD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAMR;AAMD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CASR;AAiBD,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,4BAA4B,EACxC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAgCR"}
@@ -44,8 +44,9 @@ liquid.registerFilter("cents", (value, currency = "EUR", locale = "en-US") => {
44
44
  /**
45
45
  * `format_date` — ISO/string/Date → locale-formatted date. Second arg chooses
46
46
  * the preset: `"short"` (`01/15/2026`), `"medium"` (default, `Jan 15, 2026`),
47
- * `"long"` (`January 15, 2026`), or `"iso"` (`2026-01-15`). Pair with a
48
- * locale for Romanian/etc.: `{{ startsAt | format_date: "medium", "ro-RO" }}`.
47
+ * `"long"` (`January 15, 2026`), `"iso"` (`2026-01-15`), or `"time"`
48
+ * (delegates to `format_time` `08:30`). Pair with a locale for
49
+ * Romanian/etc.: `{{ startsAt | format_date: "medium", "ro-RO" }}`.
49
50
  */
50
51
  liquid.registerFilter("format_date", (value, preset = "medium", locale = "en-US") => {
51
52
  if (value === null || value === undefined || value === "")
@@ -56,6 +57,12 @@ liquid.registerFilter("format_date", (value, preset = "medium", locale = "en-US"
56
57
  const p = String(preset ?? "medium").toLowerCase();
57
58
  if (p === "iso")
58
59
  return date.toISOString().slice(0, 10);
60
+ if (p === "time") {
61
+ // Delegate to `format_time`'s default short shape so authors
62
+ // can pipe a single `format_date: "time"` without remembering
63
+ // to switch filters.
64
+ return date.toLocaleTimeString(String(locale), { hour: "2-digit", minute: "2-digit" });
65
+ }
59
66
  const options = p === "short"
60
67
  ? { year: "numeric", month: "2-digit", day: "2-digit" }
61
68
  : p === "long"
@@ -63,6 +70,36 @@ liquid.registerFilter("format_date", (value, preset = "medium", locale = "en-US"
63
70
  : { year: "numeric", month: "short", day: "numeric" };
64
71
  return date.toLocaleDateString(String(locale), options);
65
72
  });
73
+ /**
74
+ * `format_time` — ISO/string/Date → locale-formatted time-of-day.
75
+ * Second arg picks the preset: `"short"` (default, `08:30`),
76
+ * `"medium"` (`08:30:42`), `"iso"` (`08:30:42` — same as medium but
77
+ * always 24-hour). Locale defaults to `en-US`; pass `"ro-RO"` etc.
78
+ * for locale-aware formatting (12 vs. 24 hour). Falls back to the
79
+ * raw value when not parseable.
80
+ *
81
+ * Examples:
82
+ * `{{ contract.signedAt | format_time }}` → `"08:30"`
83
+ * `{{ contract.signedAt | format_time: "medium" }}` → `"08:30:42"`
84
+ * `{{ contract.signedAt | format_time: "short", "ro-RO" }}` → `"08:30"`
85
+ */
86
+ liquid.registerFilter("format_time", (value, preset = "short", locale = "en-US") => {
87
+ if (value === null || value === undefined || value === "")
88
+ return "";
89
+ const date = value instanceof Date ? value : new Date(String(value));
90
+ if (Number.isNaN(date.getTime()))
91
+ return String(value);
92
+ const p = String(preset ?? "short").toLowerCase();
93
+ if (p === "iso") {
94
+ // 24-hour HH:MM:SS regardless of locale, useful for audit-
95
+ // trail copy where consistency beats locale courtesy.
96
+ return date.toISOString().slice(11, 19);
97
+ }
98
+ const options = p === "medium"
99
+ ? { hour: "2-digit", minute: "2-digit", second: "2-digit" }
100
+ : { hour: "2-digit", minute: "2-digit" };
101
+ return date.toLocaleTimeString(String(locale), options);
102
+ });
66
103
  function resolvePath(obj, path) {
67
104
  if (obj === null || obj === undefined)
68
105
  return undefined;
@@ -96,11 +133,12 @@ function resolvePath(obj, path) {
96
133
  }
97
134
  return current;
98
135
  }
99
- function stringifyValue(value) {
136
+ function stringifyValue(value, placeholder) {
100
137
  if (value === null || value === undefined)
101
- return "";
102
- if (typeof value === "string")
103
- return value;
138
+ return placeholder ?? "";
139
+ if (typeof value === "string") {
140
+ return value === "" && placeholder ? placeholder : value;
141
+ }
104
142
  if (typeof value === "number" || typeof value === "boolean")
105
143
  return String(value);
106
144
  return JSON.stringify(value);
@@ -108,39 +146,60 @@ function stringifyValue(value) {
108
146
  const MUSTACHE_RE = /\{\{\s*([^}]+?)\s*\}\}/g;
109
147
  const LIQUID_CONTROL_RE = /\{%-?[\s\S]*?-?%\}/;
110
148
  const LIQUID_FILTER_RE = /\{\{[\s\S]*\|[\s\S]*\}\}/;
111
- export function renderMustacheTemplate(body, variables) {
149
+ const LIQUID_OUTPUT_RE = /\{\{\s*([^}]+?)\s*\}\}/g;
150
+ const HAS_DEFAULT_FILTER_RE = /\|\s*default\s*:/i;
151
+ /**
152
+ * Inject `| default: <fallback>` into every Liquid output tag that
153
+ * doesn't already chain a `default:` filter. Applied AFTER the rest of
154
+ * the filter chain so transformations like `cents` / `format_date`
155
+ * still run; they return empty strings on missing input, which the
156
+ * `default` filter then replaces with the fallback. Output tags whose
157
+ * authors already wired their own `default: "..."` are left alone.
158
+ */
159
+ function injectDefaultFilter(body, fallback) {
160
+ return body.replace(LIQUID_OUTPUT_RE, (full, inner) => {
161
+ if (HAS_DEFAULT_FILTER_RE.test(inner))
162
+ return full;
163
+ return `{{ ${inner.trim()} | default: ${JSON.stringify(fallback)} }}`;
164
+ });
165
+ }
166
+ export function renderMustacheTemplate(body, variables, options) {
167
+ const placeholder = options?.missingValuePlaceholder;
112
168
  return body.replace(MUSTACHE_RE, (_, path) => {
113
169
  const resolved = resolvePath(variables, path.trim());
114
- return stringifyValue(resolved);
170
+ return stringifyValue(resolved, placeholder);
115
171
  });
116
172
  }
117
173
  function shouldUseLiquid(body) {
118
174
  return LIQUID_CONTROL_RE.test(body) || LIQUID_FILTER_RE.test(body);
119
175
  }
120
- export function renderStringTemplate(body, variables) {
176
+ export function renderStringTemplate(body, variables, options) {
121
177
  if (!shouldUseLiquid(body)) {
122
- return renderMustacheTemplate(body, variables);
178
+ return renderMustacheTemplate(body, variables, options);
123
179
  }
124
- return liquid.parseAndRenderSync(body, variables);
180
+ const processedBody = options?.missingValuePlaceholder
181
+ ? injectDefaultFilter(body, options.missingValuePlaceholder)
182
+ : body;
183
+ return liquid.parseAndRenderSync(processedBody, variables);
125
184
  }
126
- function walkLexical(node, variables) {
185
+ function walkLexical(node, variables, options) {
127
186
  const next = { ...node };
128
187
  if (typeof next.text === "string") {
129
- next.text = renderStringTemplate(next.text, variables);
188
+ next.text = renderStringTemplate(next.text, variables, options);
130
189
  }
131
190
  if (Array.isArray(next.children)) {
132
- next.children = next.children.map((child) => walkLexical(child, variables));
191
+ next.children = next.children.map((child) => walkLexical(child, variables, options));
133
192
  }
134
193
  return next;
135
194
  }
136
- export function renderStructuredTemplate(body, bodyFormat, variables) {
195
+ export function renderStructuredTemplate(body, bodyFormat, variables, options) {
137
196
  if (bodyFormat === "lexical_json") {
138
197
  try {
139
198
  const parsed = JSON.parse(body);
140
199
  if (Array.isArray(parsed)) {
141
200
  return JSON.stringify(parsed.map((entry) => {
142
201
  if (entry && typeof entry === "object") {
143
- return walkLexical(entry, variables);
202
+ return walkLexical(entry, variables, options);
144
203
  }
145
204
  return entry;
146
205
  }));
@@ -148,17 +207,20 @@ export function renderStructuredTemplate(body, bodyFormat, variables) {
148
207
  if (parsed && typeof parsed === "object") {
149
208
  const obj = parsed;
150
209
  if (obj.root && typeof obj.root === "object") {
151
- const result = { ...obj, root: walkLexical(obj.root, variables) };
210
+ const result = {
211
+ ...obj,
212
+ root: walkLexical(obj.root, variables, options),
213
+ };
152
214
  return JSON.stringify(result);
153
215
  }
154
- return JSON.stringify(walkLexical(obj, variables));
216
+ return JSON.stringify(walkLexical(obj, variables, options));
155
217
  }
156
218
  return body;
157
219
  }
158
220
  catch {
159
- return renderStringTemplate(body, variables);
221
+ return renderStringTemplate(body, variables, options);
160
222
  }
161
223
  }
162
- return renderStringTemplate(body, variables);
224
+ return renderStringTemplate(body, variables, options);
163
225
  }
164
226
  //# sourceMappingURL=template-renderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template-renderer.js","sourceRoot":"","sources":["../src/template-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template-renderer.js","sourceRoot":"","sources":["../src/template-renderer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voyantjs/utils",
3
- "version": "0.20.0",
3
+ "version": "0.21.0",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -97,7 +97,7 @@
97
97
  "liquidjs": "^10.24.0",
98
98
  "pdf-lib": "^1.17.1",
99
99
  "zod": "^4.3.6",
100
- "@voyantjs/types": "0.20.0"
100
+ "@voyantjs/types": "0.21.0"
101
101
  },
102
102
  "devDependencies": {
103
103
  "@types/node": "^25.5.2",