binja 0.2.2 → 0.3.1
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.
- package/README.md +26 -0
- package/dist/cli.js +19 -10
- package/dist/filters/index.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +132 -47
- package/dist/lexer/index.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -290,6 +290,28 @@ app.get('/user/:id', ({ params }) => templates.user({ id: params.id }))
|
|
|
290
290
|
| `timesince` | `{{ past\|timesince }}` | `2 days ago` |
|
|
291
291
|
| `timeuntil` | `{{ future\|timeuntil }}` | `in 3 hours` |
|
|
292
292
|
|
|
293
|
+
#### Timezone Support
|
|
294
|
+
|
|
295
|
+
All date/time operations respect the `timezone` option in Environment:
|
|
296
|
+
|
|
297
|
+
```typescript
|
|
298
|
+
const env = new Environment({
|
|
299
|
+
timezone: 'Europe/Rome' // All dates will be displayed in Rome timezone
|
|
300
|
+
})
|
|
301
|
+
|
|
302
|
+
// 2024-06-15 12:00 UTC = 2024-06-15 14:00 Rome (UTC+2)
|
|
303
|
+
await env.renderString('{{ date|date:"Y-m-d H:i" }}', {
|
|
304
|
+
date: new Date('2024-06-15T12:00:00Z')
|
|
305
|
+
})
|
|
306
|
+
// Output: 2024-06-15 14:00
|
|
307
|
+
|
|
308
|
+
// {% now %} tag also uses the configured timezone
|
|
309
|
+
await env.renderString('{% now "Y-m-d H:i" %}')
|
|
310
|
+
// Output: current date/time in Rome timezone
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
Common timezone values: `UTC`, `Europe/London`, `Europe/Rome`, `Europe/Paris`, `America/New_York`, `America/Los_Angeles`, `Asia/Tokyo`, `Asia/Shanghai`, `Australia/Sydney`
|
|
314
|
+
|
|
293
315
|
### Safety & Encoding
|
|
294
316
|
|
|
295
317
|
| Filter | Example | Description |
|
|
@@ -378,6 +400,10 @@ const env = new Environment({
|
|
|
378
400
|
// Auto-escape HTML (default: true)
|
|
379
401
|
autoescape: true,
|
|
380
402
|
|
|
403
|
+
// Timezone for date/time operations
|
|
404
|
+
// All date filters and {% now %} tag will use this timezone
|
|
405
|
+
timezone: 'Europe/Rome', // or 'UTC', 'America/New_York', etc.
|
|
406
|
+
|
|
381
407
|
// Custom filters
|
|
382
408
|
filters: {
|
|
383
409
|
currency: (value: number) => `$${value.toFixed(2)}`,
|
package/dist/cli.js
CHANGED
|
@@ -367,23 +367,32 @@ class Lexer {
|
|
|
367
367
|
return c;
|
|
368
368
|
}
|
|
369
369
|
match(expected, offset = 0) {
|
|
370
|
+
const source = this.state.source;
|
|
370
371
|
const start = this.state.pos + offset;
|
|
371
|
-
|
|
372
|
+
const len = expected.length;
|
|
373
|
+
if (start + len > source.length)
|
|
372
374
|
return false;
|
|
373
|
-
|
|
374
|
-
if (
|
|
375
|
-
|
|
376
|
-
this.state.column += expected.length;
|
|
377
|
-
}
|
|
378
|
-
return true;
|
|
375
|
+
for (let i = 0;i < len; i++) {
|
|
376
|
+
if (source[start + i] !== expected[i])
|
|
377
|
+
return false;
|
|
379
378
|
}
|
|
380
|
-
|
|
379
|
+
if (offset === 0) {
|
|
380
|
+
this.state.pos += len;
|
|
381
|
+
this.state.column += len;
|
|
382
|
+
}
|
|
383
|
+
return true;
|
|
381
384
|
}
|
|
382
385
|
check(expected, offset = 0) {
|
|
386
|
+
const source = this.state.source;
|
|
383
387
|
const start = this.state.pos + offset;
|
|
384
|
-
|
|
388
|
+
const len = expected.length;
|
|
389
|
+
if (start + len > source.length)
|
|
385
390
|
return false;
|
|
386
|
-
|
|
391
|
+
for (let i = 0;i < len; i++) {
|
|
392
|
+
if (source[start + i] !== expected[i])
|
|
393
|
+
return false;
|
|
394
|
+
}
|
|
395
|
+
return true;
|
|
387
396
|
}
|
|
388
397
|
skipWhitespace() {
|
|
389
398
|
while (!this.isAtEnd() && this.isWhitespace(this.peek())) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/filters/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/filters/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -44,6 +44,8 @@ export interface EnvironmentOptions {
|
|
|
44
44
|
debug?: boolean;
|
|
45
45
|
/** Debug panel options */
|
|
46
46
|
debugOptions?: PanelOptions;
|
|
47
|
+
/** Timezone for date/time operations (e.g., 'Europe/Rome', 'UTC', 'America/New_York') */
|
|
48
|
+
timezone?: string;
|
|
47
49
|
}
|
|
48
50
|
export declare class Environment {
|
|
49
51
|
private options;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAU,YAAY,EAAE,MAAM,UAAU,CAAA;AAE/C,OAAO,EAAkB,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1D,OAAO,EAAsC,cAAc,EAAE,MAAM,YAAY,CAAA;AAG/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAM3C,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uCAAuC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACxC,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,qCAAqC;IACrC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAA;IAChF,gDAAgD;IAChD,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACzC,+CAA+C;IAC/C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,oDAAoD;IACpD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,0BAA0B;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -403,23 +403,32 @@ class Lexer {
|
|
|
403
403
|
return c;
|
|
404
404
|
}
|
|
405
405
|
match(expected, offset = 0) {
|
|
406
|
+
const source = this.state.source;
|
|
406
407
|
const start = this.state.pos + offset;
|
|
407
|
-
|
|
408
|
+
const len = expected.length;
|
|
409
|
+
if (start + len > source.length)
|
|
408
410
|
return false;
|
|
409
|
-
|
|
410
|
-
if (
|
|
411
|
-
|
|
412
|
-
this.state.column += expected.length;
|
|
413
|
-
}
|
|
414
|
-
return true;
|
|
411
|
+
for (let i = 0;i < len; i++) {
|
|
412
|
+
if (source[start + i] !== expected[i])
|
|
413
|
+
return false;
|
|
415
414
|
}
|
|
416
|
-
|
|
415
|
+
if (offset === 0) {
|
|
416
|
+
this.state.pos += len;
|
|
417
|
+
this.state.column += len;
|
|
418
|
+
}
|
|
419
|
+
return true;
|
|
417
420
|
}
|
|
418
421
|
check(expected, offset = 0) {
|
|
422
|
+
const source = this.state.source;
|
|
419
423
|
const start = this.state.pos + offset;
|
|
420
|
-
|
|
424
|
+
const len = expected.length;
|
|
425
|
+
if (start + len > source.length)
|
|
421
426
|
return false;
|
|
422
|
-
|
|
427
|
+
for (let i = 0;i < len; i++) {
|
|
428
|
+
if (source[start + i] !== expected[i])
|
|
429
|
+
return false;
|
|
430
|
+
}
|
|
431
|
+
return true;
|
|
423
432
|
}
|
|
424
433
|
skipWhitespace() {
|
|
425
434
|
while (!this.isAtEnd() && this.isWhitespace(this.peek())) {
|
|
@@ -1786,18 +1795,19 @@ var batch = (value, size, fillWith = null) => {
|
|
|
1786
1795
|
var groupby = (value, attribute) => {
|
|
1787
1796
|
if (!Array.isArray(value))
|
|
1788
1797
|
return [];
|
|
1789
|
-
const groups =
|
|
1798
|
+
const groups = {};
|
|
1790
1799
|
for (const item of value) {
|
|
1791
|
-
const key = attribute ? item[attribute] : item;
|
|
1792
|
-
if (!
|
|
1793
|
-
groups
|
|
1800
|
+
const key = String(attribute ? item[attribute] : item);
|
|
1801
|
+
if (!(key in groups)) {
|
|
1802
|
+
groups[key] = [];
|
|
1794
1803
|
}
|
|
1795
|
-
groups
|
|
1804
|
+
groups[key].push(item);
|
|
1805
|
+
}
|
|
1806
|
+
const result = [];
|
|
1807
|
+
for (const key in groups) {
|
|
1808
|
+
result.push({ grouper: key, list: groups[key] });
|
|
1796
1809
|
}
|
|
1797
|
-
return
|
|
1798
|
-
grouper,
|
|
1799
|
-
list
|
|
1800
|
-
}));
|
|
1810
|
+
return result;
|
|
1801
1811
|
};
|
|
1802
1812
|
var wordwrap = (value, width = 79, breakLongWords = true, wrapString = `
|
|
1803
1813
|
`) => {
|
|
@@ -2307,9 +2317,22 @@ class Runtime {
|
|
|
2307
2317
|
staticResolver: options.staticResolver ?? ((path) => `/static/${path}`),
|
|
2308
2318
|
templateLoader: options.templateLoader ?? (async () => {
|
|
2309
2319
|
throw new Error("Template loader not configured");
|
|
2310
|
-
})
|
|
2320
|
+
}),
|
|
2321
|
+
timezone: options.timezone ?? undefined
|
|
2311
2322
|
};
|
|
2312
2323
|
this.filters = { ...builtinFilters, ...this.options.filters };
|
|
2324
|
+
if (this.options.timezone) {
|
|
2325
|
+
const tz = this.options.timezone;
|
|
2326
|
+
this.filters.date = (value, format2 = "N j, Y") => {
|
|
2327
|
+
const d = value instanceof Date ? value : new Date(value);
|
|
2328
|
+
if (isNaN(d.getTime()))
|
|
2329
|
+
return "";
|
|
2330
|
+
return this.formatDate(d, format2);
|
|
2331
|
+
};
|
|
2332
|
+
this.filters.time = (value, format2 = "H:i") => {
|
|
2333
|
+
return this.filters.date(value, format2);
|
|
2334
|
+
};
|
|
2335
|
+
}
|
|
2313
2336
|
this.tests = { ...builtinTests, ...this.options.tests };
|
|
2314
2337
|
}
|
|
2315
2338
|
async render(ast, context = {}) {
|
|
@@ -2509,7 +2532,10 @@ class Runtime {
|
|
|
2509
2532
|
}
|
|
2510
2533
|
renderUrlSync(node, ctx) {
|
|
2511
2534
|
const name = this.eval(node.name, ctx);
|
|
2512
|
-
const args =
|
|
2535
|
+
const args = [];
|
|
2536
|
+
for (let i = 0;i < node.args.length; i++) {
|
|
2537
|
+
args.push(this.eval(node.args[i], ctx));
|
|
2538
|
+
}
|
|
2513
2539
|
const kwargs = this.evalObjectSync(node.kwargs, ctx);
|
|
2514
2540
|
const url = this.options.urlResolver(String(name), args, kwargs);
|
|
2515
2541
|
if (node.asVar) {
|
|
@@ -2536,68 +2562,106 @@ class Runtime {
|
|
|
2536
2562
|
}
|
|
2537
2563
|
return result;
|
|
2538
2564
|
}
|
|
2565
|
+
getDateInTimezone(d, tz) {
|
|
2566
|
+
if (!tz) {
|
|
2567
|
+
return {
|
|
2568
|
+
year: d.getFullYear(),
|
|
2569
|
+
month: d.getMonth(),
|
|
2570
|
+
day: d.getDate(),
|
|
2571
|
+
weekday: d.getDay(),
|
|
2572
|
+
hours: d.getHours(),
|
|
2573
|
+
minutes: d.getMinutes(),
|
|
2574
|
+
seconds: d.getSeconds()
|
|
2575
|
+
};
|
|
2576
|
+
}
|
|
2577
|
+
const formatter = new Intl.DateTimeFormat("en-US", {
|
|
2578
|
+
timeZone: tz,
|
|
2579
|
+
year: "numeric",
|
|
2580
|
+
month: "2-digit",
|
|
2581
|
+
day: "2-digit",
|
|
2582
|
+
weekday: "short",
|
|
2583
|
+
hour: "2-digit",
|
|
2584
|
+
minute: "2-digit",
|
|
2585
|
+
second: "2-digit",
|
|
2586
|
+
hour12: false
|
|
2587
|
+
});
|
|
2588
|
+
const parts = formatter.formatToParts(d);
|
|
2589
|
+
const get = (type) => parts.find((p) => p.type === type)?.value || "";
|
|
2590
|
+
const weekdayMap = { Sun: 0, Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6 };
|
|
2591
|
+
return {
|
|
2592
|
+
year: parseInt(get("year"), 10),
|
|
2593
|
+
month: parseInt(get("month"), 10) - 1,
|
|
2594
|
+
day: parseInt(get("day"), 10),
|
|
2595
|
+
weekday: weekdayMap[get("weekday")] ?? 0,
|
|
2596
|
+
hours: parseInt(get("hour"), 10),
|
|
2597
|
+
minutes: parseInt(get("minute"), 10),
|
|
2598
|
+
seconds: parseInt(get("second"), 10)
|
|
2599
|
+
};
|
|
2600
|
+
}
|
|
2539
2601
|
formatDate(d, format2) {
|
|
2540
2602
|
const DAY_NAMES_SHORT2 = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
2541
2603
|
const DAY_NAMES_LONG2 = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
|
|
2542
2604
|
const MONTH_NAMES_SHORT2 = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
|
|
2543
2605
|
const MONTH_NAMES_LONG2 = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
|
2606
|
+
const tz = this.options.timezone;
|
|
2607
|
+
const { year, month, day, weekday, hours, minutes, seconds } = this.getDateInTimezone(d, tz);
|
|
2544
2608
|
let result = "";
|
|
2545
2609
|
for (let i = 0;i < format2.length; i++) {
|
|
2546
2610
|
const char = format2[i];
|
|
2547
2611
|
switch (char) {
|
|
2548
2612
|
case "d":
|
|
2549
|
-
result += String(
|
|
2613
|
+
result += String(day).padStart(2, "0");
|
|
2550
2614
|
break;
|
|
2551
2615
|
case "j":
|
|
2552
|
-
result += String(
|
|
2616
|
+
result += String(day);
|
|
2553
2617
|
break;
|
|
2554
2618
|
case "D":
|
|
2555
|
-
result += DAY_NAMES_SHORT2[
|
|
2619
|
+
result += DAY_NAMES_SHORT2[weekday];
|
|
2556
2620
|
break;
|
|
2557
2621
|
case "l":
|
|
2558
|
-
result += DAY_NAMES_LONG2[
|
|
2622
|
+
result += DAY_NAMES_LONG2[weekday];
|
|
2559
2623
|
break;
|
|
2560
2624
|
case "m":
|
|
2561
|
-
result += String(
|
|
2625
|
+
result += String(month + 1).padStart(2, "0");
|
|
2562
2626
|
break;
|
|
2563
2627
|
case "n":
|
|
2564
|
-
result += String(
|
|
2628
|
+
result += String(month + 1);
|
|
2565
2629
|
break;
|
|
2566
2630
|
case "M":
|
|
2567
|
-
result += MONTH_NAMES_SHORT2[
|
|
2631
|
+
result += MONTH_NAMES_SHORT2[month];
|
|
2568
2632
|
break;
|
|
2569
2633
|
case "F":
|
|
2570
|
-
result += MONTH_NAMES_LONG2[
|
|
2634
|
+
result += MONTH_NAMES_LONG2[month];
|
|
2571
2635
|
break;
|
|
2572
2636
|
case "y":
|
|
2573
|
-
result += String(
|
|
2637
|
+
result += String(year).slice(-2);
|
|
2574
2638
|
break;
|
|
2575
2639
|
case "Y":
|
|
2576
|
-
result += String(
|
|
2640
|
+
result += String(year);
|
|
2577
2641
|
break;
|
|
2578
2642
|
case "H":
|
|
2579
|
-
result += String(
|
|
2643
|
+
result += String(hours).padStart(2, "0");
|
|
2580
2644
|
break;
|
|
2581
2645
|
case "G":
|
|
2582
|
-
result += String(
|
|
2646
|
+
result += String(hours);
|
|
2583
2647
|
break;
|
|
2584
2648
|
case "i":
|
|
2585
|
-
result += String(
|
|
2649
|
+
result += String(minutes).padStart(2, "0");
|
|
2586
2650
|
break;
|
|
2587
2651
|
case "s":
|
|
2588
|
-
result += String(
|
|
2652
|
+
result += String(seconds).padStart(2, "0");
|
|
2589
2653
|
break;
|
|
2590
2654
|
case "a":
|
|
2591
|
-
result +=
|
|
2655
|
+
result += hours < 12 ? "a.m." : "p.m.";
|
|
2592
2656
|
break;
|
|
2593
2657
|
case "A":
|
|
2594
|
-
result +=
|
|
2658
|
+
result += hours < 12 ? "AM" : "PM";
|
|
2595
2659
|
break;
|
|
2596
2660
|
case "g":
|
|
2597
|
-
result += String(
|
|
2661
|
+
result += String(hours % 12 || 12);
|
|
2598
2662
|
break;
|
|
2599
2663
|
case "h":
|
|
2600
|
-
result += String(
|
|
2664
|
+
result += String(hours % 12 || 12).padStart(2, "0");
|
|
2601
2665
|
break;
|
|
2602
2666
|
default:
|
|
2603
2667
|
result += char;
|
|
@@ -2634,8 +2698,14 @@ class Runtime {
|
|
|
2634
2698
|
return this.evalCompare(node, ctx);
|
|
2635
2699
|
case "Conditional":
|
|
2636
2700
|
return this.evalConditional(node, ctx);
|
|
2637
|
-
case "Array":
|
|
2638
|
-
|
|
2701
|
+
case "Array": {
|
|
2702
|
+
const elements = node.elements;
|
|
2703
|
+
const result = [];
|
|
2704
|
+
for (let i = 0;i < elements.length; i++) {
|
|
2705
|
+
result.push(this.eval(elements[i], ctx));
|
|
2706
|
+
}
|
|
2707
|
+
return result;
|
|
2708
|
+
}
|
|
2639
2709
|
case "Object":
|
|
2640
2710
|
return this.evalObjectLiteral(node, ctx);
|
|
2641
2711
|
case "FunctionCall":
|
|
@@ -2671,7 +2741,10 @@ class Runtime {
|
|
|
2671
2741
|
}
|
|
2672
2742
|
evalFilter(node, ctx) {
|
|
2673
2743
|
const value = this.eval(node.node, ctx);
|
|
2674
|
-
const args =
|
|
2744
|
+
const args = [];
|
|
2745
|
+
for (let i = 0;i < node.args.length; i++) {
|
|
2746
|
+
args.push(this.eval(node.args[i], ctx));
|
|
2747
|
+
}
|
|
2675
2748
|
const kwargs = this.evalObjectSync(node.kwargs, ctx);
|
|
2676
2749
|
const filter = this.filters[node.filter];
|
|
2677
2750
|
if (!filter)
|
|
@@ -2772,7 +2845,10 @@ class Runtime {
|
|
|
2772
2845
|
}
|
|
2773
2846
|
evalFunctionCall(node, ctx) {
|
|
2774
2847
|
const callee = this.eval(node.callee, ctx);
|
|
2775
|
-
const args =
|
|
2848
|
+
const args = [];
|
|
2849
|
+
for (let i = 0;i < node.args.length; i++) {
|
|
2850
|
+
args.push(this.eval(node.args[i], ctx));
|
|
2851
|
+
}
|
|
2776
2852
|
const kwargs = this.evalObjectSync(node.kwargs, ctx);
|
|
2777
2853
|
return typeof callee === "function" ? callee(...args, kwargs) : undefined;
|
|
2778
2854
|
}
|
|
@@ -2788,7 +2864,10 @@ class Runtime {
|
|
|
2788
2864
|
return node.negated ? !result2 : result2;
|
|
2789
2865
|
}
|
|
2790
2866
|
const value = this.eval(node.node, ctx);
|
|
2791
|
-
const args =
|
|
2867
|
+
const args = [];
|
|
2868
|
+
for (let i = 0;i < node.args.length; i++) {
|
|
2869
|
+
args.push(this.eval(node.args[i], ctx));
|
|
2870
|
+
}
|
|
2792
2871
|
const test = this.tests[node.test];
|
|
2793
2872
|
if (!test)
|
|
2794
2873
|
throw new Error(`Unknown test: ${node.test}`);
|
|
@@ -3004,7 +3083,11 @@ class Runtime {
|
|
|
3004
3083
|
if (typeof value[Symbol.iterator] === "function") {
|
|
3005
3084
|
return Array.from(value);
|
|
3006
3085
|
}
|
|
3007
|
-
|
|
3086
|
+
const result = [];
|
|
3087
|
+
for (const key in value) {
|
|
3088
|
+
result.push({ key, value: value[key], 0: key, 1: value[key] });
|
|
3089
|
+
}
|
|
3090
|
+
return result;
|
|
3008
3091
|
}
|
|
3009
3092
|
return [value];
|
|
3010
3093
|
}
|
|
@@ -4446,7 +4529,8 @@ class Environment {
|
|
|
4446
4529
|
cache: options.cache ?? true,
|
|
4447
4530
|
extensions: options.extensions ?? [".html", ".jinja", ".jinja2", ""],
|
|
4448
4531
|
debug: options.debug ?? false,
|
|
4449
|
-
debugOptions: options.debugOptions ?? {}
|
|
4532
|
+
debugOptions: options.debugOptions ?? {},
|
|
4533
|
+
timezone: options.timezone ?? undefined
|
|
4450
4534
|
};
|
|
4451
4535
|
this.runtime = new Runtime({
|
|
4452
4536
|
autoescape: this.options.autoescape,
|
|
@@ -4454,7 +4538,8 @@ class Environment {
|
|
|
4454
4538
|
globals: this.options.globals,
|
|
4455
4539
|
urlResolver: this.options.urlResolver,
|
|
4456
4540
|
staticResolver: this.options.staticResolver,
|
|
4457
|
-
templateLoader: this.loadTemplate.bind(this)
|
|
4541
|
+
templateLoader: this.loadTemplate.bind(this),
|
|
4542
|
+
timezone: this.options.timezone
|
|
4458
4543
|
});
|
|
4459
4544
|
}
|
|
4460
4545
|
async render(templateName, context = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lexer/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,EAAmC,MAAM,UAAU,CAAA;AAEjE,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAQ;gBAGxB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,UAAU,CAAC,EAAE,MAAM,CAAA;KACf;IAmBR,QAAQ,IAAI,KAAK,EAAE;IASnB,OAAO,CAAC,SAAS;IAsCjB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,YAAY;IA0EpB,OAAO,CAAC,QAAQ;IAmChB,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,YAAY;IAuDpB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lexer/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,EAAmC,MAAM,UAAU,CAAA;AAEjE,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAQ;gBAGxB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,UAAU,CAAC,EAAE,MAAM,CAAA;KACf;IAmBR,QAAQ,IAAI,KAAK,EAAE;IASnB,OAAO,CAAC,SAAS;IAsCjB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,YAAY;IA0EpB,OAAO,CAAC,QAAQ;IAmChB,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,YAAY;IAuDpB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,KAAK;IAkBb,OAAO,CAAC,KAAK;IAab,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,QAAQ;CAQjB;AAED,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC9C,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA"}
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export interface RuntimeOptions {
|
|
|
17
17
|
urlResolver?: (name: string, args: any[], kwargs: Record<string, any>) => string;
|
|
18
18
|
staticResolver?: (path: string) => string;
|
|
19
19
|
templateLoader?: (name: string) => Promise<TemplateNode>;
|
|
20
|
+
/** Timezone for date/time operations (e.g., 'Europe/Rome', 'UTC') */
|
|
21
|
+
timezone?: string;
|
|
20
22
|
}
|
|
21
23
|
export declare class Runtime {
|
|
22
24
|
private options;
|
|
@@ -38,6 +40,7 @@ export declare class Runtime {
|
|
|
38
40
|
private renderUrlSync;
|
|
39
41
|
private renderStaticSync;
|
|
40
42
|
private renderNowSync;
|
|
43
|
+
private getDateInTimezone;
|
|
41
44
|
private formatDate;
|
|
42
45
|
private renderNodesSync;
|
|
43
46
|
private eval;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAkB,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EAAgB,YAAY,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,KAAK,EAEV,YAAY,EAcZ,cAAc,EAcf,MAAM,iBAAiB,CAAA;AAExB,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAA;IAChF,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACzC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAkB,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EAAgB,YAAY,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,KAAK,EAEV,YAAY,EAcZ,cAAc,EAcf,MAAM,iBAAiB,CAAA;AAExB,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAA;IAChF,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACzC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;IACxD,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAoE;IACnF,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,cAAc,CAA4B;gBAEtC,OAAO,GAAE,cAAmB;IAkClC,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBnF,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;IA6CrB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,iBAAiB;IA+CzB,OAAO,CAAC,UAAU;IA4ClB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,IAAI;IAwCZ,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,QAAQ;IAuBhB,OAAO,CAAC,cAAc;YAUR,aAAa;YAYb,mBAAmB;YASnB,eAAe;YAkCf,aAAa;YAYb,cAAc;YA6Cd,gBAAgB;YAchB,aAAa;YAoBb,eAAe;YAUf,gBAAgB;IAUxB,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAMhE,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,UAAU;IAoBlB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,GAAG,IAAI;IAKjD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,GAAG,IAAI;IAK7C,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;CAG1C;AAED,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA"}
|