@elaraai/east 0.0.1-beta.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.
Files changed (251) hide show
  1. package/LICENSE.md +682 -0
  2. package/README.md +276 -0
  3. package/dist/src/analyze.d.ts +95 -0
  4. package/dist/src/analyze.d.ts.map +1 -0
  5. package/dist/src/analyze.js +1110 -0
  6. package/dist/src/analyze.js.map +1 -0
  7. package/dist/src/ast.d.ts +263 -0
  8. package/dist/src/ast.d.ts.map +1 -0
  9. package/dist/src/ast.js +151 -0
  10. package/dist/src/ast.js.map +1 -0
  11. package/dist/src/ast_to_ir.d.ts +24 -0
  12. package/dist/src/ast_to_ir.d.ts.map +1 -0
  13. package/dist/src/ast_to_ir.js +834 -0
  14. package/dist/src/ast_to_ir.js.map +1 -0
  15. package/dist/src/builtins.d.ts +18 -0
  16. package/dist/src/builtins.d.ts.map +1 -0
  17. package/dist/src/builtins.js +1105 -0
  18. package/dist/src/builtins.js.map +1 -0
  19. package/dist/src/comparison.d.ts +28 -0
  20. package/dist/src/comparison.d.ts.map +1 -0
  21. package/dist/src/comparison.js +1017 -0
  22. package/dist/src/comparison.js.map +1 -0
  23. package/dist/src/compile.d.ts +22 -0
  24. package/dist/src/compile.d.ts.map +1 -0
  25. package/dist/src/compile.js +3260 -0
  26. package/dist/src/compile.js.map +1 -0
  27. package/dist/src/containers/ref.d.ts +106 -0
  28. package/dist/src/containers/ref.d.ts.map +1 -0
  29. package/dist/src/containers/ref.js +100 -0
  30. package/dist/src/containers/ref.js.map +1 -0
  31. package/dist/src/containers/sortedmap.d.ts +165 -0
  32. package/dist/src/containers/sortedmap.d.ts.map +1 -0
  33. package/dist/src/containers/sortedmap.js +237 -0
  34. package/dist/src/containers/sortedmap.js.map +1 -0
  35. package/dist/src/containers/sortedset.d.ts +185 -0
  36. package/dist/src/containers/sortedset.d.ts.map +1 -0
  37. package/dist/src/containers/sortedset.js +312 -0
  38. package/dist/src/containers/sortedset.js.map +1 -0
  39. package/dist/src/containers/variant.d.ts +131 -0
  40. package/dist/src/containers/variant.d.ts.map +1 -0
  41. package/dist/src/containers/variant.js +68 -0
  42. package/dist/src/containers/variant.js.map +1 -0
  43. package/dist/src/datetime_format/parse.d.ts +50 -0
  44. package/dist/src/datetime_format/parse.d.ts.map +1 -0
  45. package/dist/src/datetime_format/parse.js +908 -0
  46. package/dist/src/datetime_format/parse.js.map +1 -0
  47. package/dist/src/datetime_format/print.d.ts +35 -0
  48. package/dist/src/datetime_format/print.d.ts.map +1 -0
  49. package/dist/src/datetime_format/print.js +157 -0
  50. package/dist/src/datetime_format/print.js.map +1 -0
  51. package/dist/src/datetime_format/tokenize.d.ts +76 -0
  52. package/dist/src/datetime_format/tokenize.d.ts.map +1 -0
  53. package/dist/src/datetime_format/tokenize.js +271 -0
  54. package/dist/src/datetime_format/tokenize.js.map +1 -0
  55. package/dist/src/datetime_format/types.d.ts +99 -0
  56. package/dist/src/datetime_format/types.d.ts.map +1 -0
  57. package/dist/src/datetime_format/types.js +103 -0
  58. package/dist/src/datetime_format/types.js.map +1 -0
  59. package/dist/src/datetime_format/validate.d.ts +51 -0
  60. package/dist/src/datetime_format/validate.d.ts.map +1 -0
  61. package/dist/src/datetime_format/validate.js +208 -0
  62. package/dist/src/datetime_format/validate.js.map +1 -0
  63. package/dist/src/default.d.ts +21 -0
  64. package/dist/src/default.d.ts.map +1 -0
  65. package/dist/src/default.js +82 -0
  66. package/dist/src/default.js.map +1 -0
  67. package/dist/src/eastir.d.ts +33 -0
  68. package/dist/src/eastir.d.ts.map +1 -0
  69. package/dist/src/eastir.js +92 -0
  70. package/dist/src/eastir.js.map +1 -0
  71. package/dist/src/error.d.ts +13 -0
  72. package/dist/src/error.d.ts.map +1 -0
  73. package/dist/src/error.js +8 -0
  74. package/dist/src/error.js.map +1 -0
  75. package/dist/src/expr/array.d.ts +1711 -0
  76. package/dist/src/expr/array.d.ts.map +1 -0
  77. package/dist/src/expr/array.js +1805 -0
  78. package/dist/src/expr/array.js.map +1 -0
  79. package/dist/src/expr/ast.d.ts +17 -0
  80. package/dist/src/expr/ast.d.ts.map +1 -0
  81. package/dist/src/expr/ast.js +302 -0
  82. package/dist/src/expr/ast.js.map +1 -0
  83. package/dist/src/expr/blob.d.ts +141 -0
  84. package/dist/src/expr/blob.d.ts.map +1 -0
  85. package/dist/src/expr/blob.js +198 -0
  86. package/dist/src/expr/blob.js.map +1 -0
  87. package/dist/src/expr/block.d.ts +201 -0
  88. package/dist/src/expr/block.d.ts.map +1 -0
  89. package/dist/src/expr/block.js +1505 -0
  90. package/dist/src/expr/block.js.map +1 -0
  91. package/dist/src/expr/boolean.d.ts +207 -0
  92. package/dist/src/expr/boolean.d.ts.map +1 -0
  93. package/dist/src/expr/boolean.js +261 -0
  94. package/dist/src/expr/boolean.js.map +1 -0
  95. package/dist/src/expr/datetime.d.ts +544 -0
  96. package/dist/src/expr/datetime.d.ts.map +1 -0
  97. package/dist/src/expr/datetime.js +980 -0
  98. package/dist/src/expr/datetime.js.map +1 -0
  99. package/dist/src/expr/dict.d.ts +1242 -0
  100. package/dist/src/expr/dict.d.ts.map +1 -0
  101. package/dist/src/expr/dict.js +1492 -0
  102. package/dist/src/expr/dict.js.map +1 -0
  103. package/dist/src/expr/expr.d.ts +95 -0
  104. package/dist/src/expr/expr.d.ts.map +1 -0
  105. package/dist/src/expr/expr.js +171 -0
  106. package/dist/src/expr/expr.js.map +1 -0
  107. package/dist/src/expr/float.d.ts +357 -0
  108. package/dist/src/expr/float.d.ts.map +1 -0
  109. package/dist/src/expr/float.js +637 -0
  110. package/dist/src/expr/float.js.map +1 -0
  111. package/dist/src/expr/function.d.ts +46 -0
  112. package/dist/src/expr/function.d.ts.map +1 -0
  113. package/dist/src/expr/function.js +58 -0
  114. package/dist/src/expr/function.js.map +1 -0
  115. package/dist/src/expr/index.d.ts +450 -0
  116. package/dist/src/expr/index.d.ts.map +1 -0
  117. package/dist/src/expr/index.js +423 -0
  118. package/dist/src/expr/index.js.map +1 -0
  119. package/dist/src/expr/integer.d.ts +256 -0
  120. package/dist/src/expr/integer.d.ts.map +1 -0
  121. package/dist/src/expr/integer.js +311 -0
  122. package/dist/src/expr/integer.js.map +1 -0
  123. package/dist/src/expr/libs/array.d.ts +106 -0
  124. package/dist/src/expr/libs/array.d.ts.map +1 -0
  125. package/dist/src/expr/libs/array.js +140 -0
  126. package/dist/src/expr/libs/array.js.map +1 -0
  127. package/dist/src/expr/libs/blob.d.ts +42 -0
  128. package/dist/src/expr/libs/blob.d.ts.map +1 -0
  129. package/dist/src/expr/libs/blob.js +70 -0
  130. package/dist/src/expr/libs/blob.js.map +1 -0
  131. package/dist/src/expr/libs/datetime.d.ts +479 -0
  132. package/dist/src/expr/libs/datetime.d.ts.map +1 -0
  133. package/dist/src/expr/libs/datetime.js +624 -0
  134. package/dist/src/expr/libs/datetime.js.map +1 -0
  135. package/dist/src/expr/libs/dict.d.ts +66 -0
  136. package/dist/src/expr/libs/dict.d.ts.map +1 -0
  137. package/dist/src/expr/libs/dict.js +77 -0
  138. package/dist/src/expr/libs/dict.js.map +1 -0
  139. package/dist/src/expr/libs/float.d.ts +299 -0
  140. package/dist/src/expr/libs/float.d.ts.map +1 -0
  141. package/dist/src/expr/libs/float.js +564 -0
  142. package/dist/src/expr/libs/float.js.map +1 -0
  143. package/dist/src/expr/libs/integer.d.ts +228 -0
  144. package/dist/src/expr/libs/integer.d.ts.map +1 -0
  145. package/dist/src/expr/libs/integer.js +398 -0
  146. package/dist/src/expr/libs/integer.js.map +1 -0
  147. package/dist/src/expr/libs/set.d.ts +59 -0
  148. package/dist/src/expr/libs/set.d.ts.map +1 -0
  149. package/dist/src/expr/libs/set.js +69 -0
  150. package/dist/src/expr/libs/set.js.map +1 -0
  151. package/dist/src/expr/libs/string.d.ts +71 -0
  152. package/dist/src/expr/libs/string.d.ts.map +1 -0
  153. package/dist/src/expr/libs/string.js +75 -0
  154. package/dist/src/expr/libs/string.js.map +1 -0
  155. package/dist/src/expr/never.d.ts +15 -0
  156. package/dist/src/expr/never.d.ts.map +1 -0
  157. package/dist/src/expr/never.js +12 -0
  158. package/dist/src/expr/never.js.map +1 -0
  159. package/dist/src/expr/null.d.ts +15 -0
  160. package/dist/src/expr/null.d.ts.map +1 -0
  161. package/dist/src/expr/null.js +12 -0
  162. package/dist/src/expr/null.js.map +1 -0
  163. package/dist/src/expr/ref.d.ts +103 -0
  164. package/dist/src/expr/ref.d.ts.map +1 -0
  165. package/dist/src/expr/ref.js +131 -0
  166. package/dist/src/expr/ref.js.map +1 -0
  167. package/dist/src/expr/regex_validation.d.ts +25 -0
  168. package/dist/src/expr/regex_validation.d.ts.map +1 -0
  169. package/dist/src/expr/regex_validation.js +130 -0
  170. package/dist/src/expr/regex_validation.js.map +1 -0
  171. package/dist/src/expr/set.d.ts +1071 -0
  172. package/dist/src/expr/set.d.ts.map +1 -0
  173. package/dist/src/expr/set.js +1137 -0
  174. package/dist/src/expr/set.js.map +1 -0
  175. package/dist/src/expr/string.d.ts +414 -0
  176. package/dist/src/expr/string.d.ts.map +1 -0
  177. package/dist/src/expr/string.js +683 -0
  178. package/dist/src/expr/string.js.map +1 -0
  179. package/dist/src/expr/struct.d.ts +48 -0
  180. package/dist/src/expr/struct.d.ts.map +1 -0
  181. package/dist/src/expr/struct.js +65 -0
  182. package/dist/src/expr/struct.js.map +1 -0
  183. package/dist/src/expr/types.d.ts +68 -0
  184. package/dist/src/expr/types.d.ts.map +1 -0
  185. package/dist/src/expr/types.js +6 -0
  186. package/dist/src/expr/types.js.map +1 -0
  187. package/dist/src/expr/variant.d.ts +137 -0
  188. package/dist/src/expr/variant.d.ts.map +1 -0
  189. package/dist/src/expr/variant.js +105 -0
  190. package/dist/src/expr/variant.js.map +1 -0
  191. package/dist/src/fuzz.d.ts +80 -0
  192. package/dist/src/fuzz.d.ts.map +1 -0
  193. package/dist/src/fuzz.js +300 -0
  194. package/dist/src/fuzz.js.map +1 -0
  195. package/dist/src/index.d.ts +21 -0
  196. package/dist/src/index.d.ts.map +1 -0
  197. package/dist/src/index.js +21 -0
  198. package/dist/src/index.js.map +1 -0
  199. package/dist/src/internal.d.ts +36 -0
  200. package/dist/src/internal.d.ts.map +1 -0
  201. package/dist/src/internal.js +11 -0
  202. package/dist/src/internal.js.map +1 -0
  203. package/dist/src/ir.d.ts +1571 -0
  204. package/dist/src/ir.d.ts.map +1 -0
  205. package/dist/src/ir.js +56 -0
  206. package/dist/src/ir.js.map +1 -0
  207. package/dist/src/location.d.ts +48 -0
  208. package/dist/src/location.d.ts.map +1 -0
  209. package/dist/src/location.js +62 -0
  210. package/dist/src/location.js.map +1 -0
  211. package/dist/src/platform.d.ts +21 -0
  212. package/dist/src/platform.d.ts.map +1 -0
  213. package/dist/src/platform.js +8 -0
  214. package/dist/src/platform.js.map +1 -0
  215. package/dist/src/serialization/beast.d.ts +39 -0
  216. package/dist/src/serialization/beast.d.ts.map +1 -0
  217. package/dist/src/serialization/beast.js +555 -0
  218. package/dist/src/serialization/beast.js.map +1 -0
  219. package/dist/src/serialization/beast2-stream.d.ts +38 -0
  220. package/dist/src/serialization/beast2-stream.d.ts.map +1 -0
  221. package/dist/src/serialization/beast2-stream.js +665 -0
  222. package/dist/src/serialization/beast2-stream.js.map +1 -0
  223. package/dist/src/serialization/beast2.d.ts +41 -0
  224. package/dist/src/serialization/beast2.d.ts.map +1 -0
  225. package/dist/src/serialization/beast2.js +489 -0
  226. package/dist/src/serialization/beast2.js.map +1 -0
  227. package/dist/src/serialization/binary-utils.d.ts +151 -0
  228. package/dist/src/serialization/binary-utils.d.ts.map +1 -0
  229. package/dist/src/serialization/binary-utils.js +929 -0
  230. package/dist/src/serialization/binary-utils.js.map +1 -0
  231. package/dist/src/serialization/east.d.ts +84 -0
  232. package/dist/src/serialization/east.d.ts.map +1 -0
  233. package/dist/src/serialization/east.js +1802 -0
  234. package/dist/src/serialization/east.js.map +1 -0
  235. package/dist/src/serialization/index.d.ts +11 -0
  236. package/dist/src/serialization/index.d.ts.map +1 -0
  237. package/dist/src/serialization/index.js +12 -0
  238. package/dist/src/serialization/index.js.map +1 -0
  239. package/dist/src/serialization/json.d.ts +36 -0
  240. package/dist/src/serialization/json.d.ts.map +1 -0
  241. package/dist/src/serialization/json.js +849 -0
  242. package/dist/src/serialization/json.js.map +1 -0
  243. package/dist/src/type_of_type.d.ts +115 -0
  244. package/dist/src/type_of_type.d.ts.map +1 -0
  245. package/dist/src/type_of_type.js +362 -0
  246. package/dist/src/type_of_type.js.map +1 -0
  247. package/dist/src/types.d.ts +648 -0
  248. package/dist/src/types.d.ts.map +1 -0
  249. package/dist/src/types.js +1631 -0
  250. package/dist/src/types.js.map +1 -0
  251. package/package.json +87 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/datetime_format/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Datetime formatting runtime implementation.
7
+ *
8
+ * This module provides the runtime formatting logic for converting Date objects
9
+ * to strings according to parsed format token arrays. This is called by the
10
+ * DateTimePrintFormat builtin.
11
+ */
12
+ import type { DateTimeFormatToken } from "./types.js";
13
+ /**
14
+ * Formats a Date according to an array of format tokens.
15
+ *
16
+ * @param date - The Date object to format
17
+ * @param tokens - Array of format tokens specifying the output format
18
+ * @returns The formatted date string
19
+ *
20
+ * @remarks
21
+ * This function implements the runtime formatting logic for East's datetime
22
+ * formatting. It is called by the DateTimePrintFormat builtin.
23
+ *
24
+ * All dates are treated as UTC (naive datetimes with no timezone information).
25
+ * The Date object's UTC time components are used for formatting.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * const date = new Date("2025-01-15T14:30:45.123Z"); // Jan 15, 2025 14:30:45.123 UTC
30
+ * const tokens = parseDateTimeFormat("YYYY-MM-DD HH:mm:ss.SSS");
31
+ * formatDateTime(date, tokens); // "2025-01-15 14:30:45.123"
32
+ * ```
33
+ */
34
+ export declare function formatDateTime(date: Date, tokens: DateTimeFormatToken[]): string;
35
+ //# sourceMappingURL=print.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print.d.ts","sourceRoot":"","sources":["../../../src/datetime_format/print.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAwCtD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,CA4HhF"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Month names in English.
7
+ */
8
+ const MONTH_NAMES_FULL = [
9
+ "January", "February", "March", "April", "May", "June",
10
+ "July", "August", "September", "October", "November", "December"
11
+ ];
12
+ /**
13
+ * Abbreviated month names in English.
14
+ */
15
+ const MONTH_NAMES_SHORT = [
16
+ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
17
+ "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
18
+ ];
19
+ /**
20
+ * Full weekday names in English, starting with Sunday.
21
+ */
22
+ const WEEKDAY_NAMES_FULL = [
23
+ "Sunday", "Monday", "Tuesday", "Wednesday",
24
+ "Thursday", "Friday", "Saturday"
25
+ ];
26
+ /**
27
+ * Abbreviated weekday names in English, starting with Sunday.
28
+ */
29
+ const WEEKDAY_NAMES_SHORT = [
30
+ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
31
+ ];
32
+ /**
33
+ * Minimal weekday names (2 characters), starting with Sunday.
34
+ */
35
+ const WEEKDAY_NAMES_MIN = [
36
+ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"
37
+ ];
38
+ /**
39
+ * Formats a Date according to an array of format tokens.
40
+ *
41
+ * @param date - The Date object to format
42
+ * @param tokens - Array of format tokens specifying the output format
43
+ * @returns The formatted date string
44
+ *
45
+ * @remarks
46
+ * This function implements the runtime formatting logic for East's datetime
47
+ * formatting. It is called by the DateTimePrintFormat builtin.
48
+ *
49
+ * All dates are treated as UTC (naive datetimes with no timezone information).
50
+ * The Date object's UTC time components are used for formatting.
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * const date = new Date("2025-01-15T14:30:45.123Z"); // Jan 15, 2025 14:30:45.123 UTC
55
+ * const tokens = parseDateTimeFormat("YYYY-MM-DD HH:mm:ss.SSS");
56
+ * formatDateTime(date, tokens); // "2025-01-15 14:30:45.123"
57
+ * ```
58
+ */
59
+ export function formatDateTime(date, tokens) {
60
+ const parts = [];
61
+ for (const token of tokens) {
62
+ let part;
63
+ switch (token.type) {
64
+ // Year
65
+ case "year4":
66
+ part = date.getUTCFullYear().toString();
67
+ break;
68
+ case "year2":
69
+ part = (date.getUTCFullYear() % 100).toString().padStart(2, "0");
70
+ break;
71
+ // Month
72
+ case "month1":
73
+ part = (date.getUTCMonth() + 1).toString();
74
+ break;
75
+ case "month2":
76
+ part = (date.getUTCMonth() + 1).toString().padStart(2, "0");
77
+ break;
78
+ case "monthNameShort":
79
+ part = MONTH_NAMES_SHORT[date.getUTCMonth()];
80
+ break;
81
+ case "monthNameFull":
82
+ part = MONTH_NAMES_FULL[date.getUTCMonth()];
83
+ break;
84
+ // Day of month
85
+ case "day1":
86
+ part = date.getUTCDate().toString();
87
+ break;
88
+ case "day2":
89
+ part = date.getUTCDate().toString().padStart(2, "0");
90
+ break;
91
+ // Day of week
92
+ case "weekdayNameMin":
93
+ part = WEEKDAY_NAMES_MIN[date.getUTCDay()];
94
+ break;
95
+ case "weekdayNameShort":
96
+ part = WEEKDAY_NAMES_SHORT[date.getUTCDay()];
97
+ break;
98
+ case "weekdayNameFull":
99
+ part = WEEKDAY_NAMES_FULL[date.getUTCDay()];
100
+ break;
101
+ // Hour (24-hour)
102
+ case "hour24_1":
103
+ part = date.getUTCHours().toString();
104
+ break;
105
+ case "hour24_2":
106
+ part = date.getUTCHours().toString().padStart(2, "0");
107
+ break;
108
+ // Hour (12-hour)
109
+ case "hour12_1": {
110
+ const hour12 = date.getUTCHours() % 12 || 12;
111
+ part = hour12.toString();
112
+ break;
113
+ }
114
+ case "hour12_2": {
115
+ const hour12 = date.getUTCHours() % 12 || 12;
116
+ part = hour12.toString().padStart(2, "0");
117
+ break;
118
+ }
119
+ // Minute
120
+ case "minute1":
121
+ part = date.getUTCMinutes().toString();
122
+ break;
123
+ case "minute2":
124
+ part = date.getUTCMinutes().toString().padStart(2, "0");
125
+ break;
126
+ // Second
127
+ case "second1":
128
+ part = date.getUTCSeconds().toString();
129
+ break;
130
+ case "second2":
131
+ part = date.getUTCSeconds().toString().padStart(2, "0");
132
+ break;
133
+ // Millisecond
134
+ case "millisecond3":
135
+ part = date.getUTCMilliseconds().toString().padStart(3, "0");
136
+ break;
137
+ // AM/PM
138
+ case "ampmUpper":
139
+ part = date.getUTCHours() < 12 ? "AM" : "PM";
140
+ break;
141
+ case "ampmLower":
142
+ part = date.getUTCHours() < 12 ? "am" : "pm";
143
+ break;
144
+ // Literal
145
+ case "literal":
146
+ part = token.value;
147
+ break;
148
+ default:
149
+ // TypeScript exhaustiveness check
150
+ const _exhaustive = token;
151
+ throw new Error(`Unknown datetime format token type: ${_exhaustive.type}`);
152
+ }
153
+ parts.push(part);
154
+ }
155
+ return parts.join("");
156
+ }
157
+ //# sourceMappingURL=print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print.js","sourceRoot":"","sources":["../../../src/datetime_format/print.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ import type { DateTimeFormatToken } from "./types.js";
6
+ /**
7
+ * Parses a datetime format string into structured tokens.
8
+ *
9
+ * @param format - The format string to parse (e.g., "YYYY-MM-DD HH:mm:ss")
10
+ * @returns Array of format tokens
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * parseDateTimeFormat("YYYY-MM-DD")
15
+ * // Returns:
16
+ * // [
17
+ * // variant("year4", null),
18
+ * // variant("literal", "-"),
19
+ * // variant("month2", null),
20
+ * // variant("literal", "-"),
21
+ * // variant("day2", null)
22
+ * // ]
23
+ * ```
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * // Escaping
28
+ * parseDateTimeFormat("\\YYYY-MM-DD") // literal "YYYY-MM-DD"
29
+ * parseDateTimeFormat("YYYY\\-MM") // year4, literal "-", month2
30
+ * ```
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * // Unicode support
35
+ * parseDateTimeFormat("YYYY年MM月DD日")
36
+ * // Returns: year4, literal("年"), month2, literal("月"), day2, literal("日")
37
+ * ```
38
+ */
39
+ export declare function tokenizeDateTimeFormat(format: string): DateTimeFormatToken[];
40
+ /**
41
+ * Converts a token array back to a canonical format string.
42
+ *
43
+ * This produces a format string with minimal escaping - only escaping
44
+ * characters when they would otherwise be parsed as format tokens.
45
+ *
46
+ * @param tokens - Array of format tokens to stringify
47
+ * @param colorize - Whether to colorize format tokens with ANSI cyan (default: false)
48
+ * @returns A canonical format string that parses to the same tokens
49
+ *
50
+ * @remarks
51
+ * This is useful for debugging and error messages. When users write
52
+ * format strings with accidental format codes, showing the canonical
53
+ * version helps them understand what was parsed.
54
+ *
55
+ * When `colorize` is true, format tokens (e.g., "YYYY", "MM", "DD") are
56
+ * wrapped in ANSI escape codes to display in cyan, making them visually
57
+ * distinct from literal characters in terminal output.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * // Show user what their format string was interpreted as
62
+ * const tokens = parseDateTimeFormat("Today is YYYY");
63
+ * console.warn(`Parsed as: "${formatTokensToString(tokens)}"`);
64
+ * // Output: Parsed as: "Tod\ay i\s YYYY"
65
+ * ```
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * // Colorized output for terminal
70
+ * const tokens = parseDateTimeFormat("YYYY-MM-DD");
71
+ * console.log(formatTokensToString(tokens, true));
72
+ * // Output: format tokens in cyan, literals in default color
73
+ * ```
74
+ */
75
+ export declare function formatTokensToString(tokens: DateTimeFormatToken[], colorize?: boolean): string;
76
+ //# sourceMappingURL=tokenize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenize.d.ts","sourceRoot":"","sources":["../../../src/datetime_format/tokenize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAqI5E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,EAAE,EAAE,QAAQ,GAAE,OAAe,GAAG,MAAM,CA6ErG"}
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * Parser/tokenizer for datetime format strings.
7
+ *
8
+ * Converts Day.js-style format strings into structured token arrays.
9
+ * The parser handles escape sequences and groups consecutive literal
10
+ * characters into single tokens for efficiency.
11
+ *
12
+ * @remarks
13
+ * Escaping: Use backslash (`\`) to escape any character. `\x` produces
14
+ * literal `x` for any character. A terminating backslash is treated as
15
+ * a literal backslash.
16
+ *
17
+ * Unicode: The parser correctly handles Unicode codepoints including
18
+ * surrogate pairs (but not grapheme clusters).
19
+ */
20
+ import { variant } from "../containers/variant.js";
21
+ /**
22
+ * Parses a datetime format string into structured tokens.
23
+ *
24
+ * @param format - The format string to parse (e.g., "YYYY-MM-DD HH:mm:ss")
25
+ * @returns Array of format tokens
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * parseDateTimeFormat("YYYY-MM-DD")
30
+ * // Returns:
31
+ * // [
32
+ * // variant("year4", null),
33
+ * // variant("literal", "-"),
34
+ * // variant("month2", null),
35
+ * // variant("literal", "-"),
36
+ * // variant("day2", null)
37
+ * // ]
38
+ * ```
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * // Escaping
43
+ * parseDateTimeFormat("\\YYYY-MM-DD") // literal "YYYY-MM-DD"
44
+ * parseDateTimeFormat("YYYY\\-MM") // year4, literal "-", month2
45
+ * ```
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * // Unicode support
50
+ * parseDateTimeFormat("YYYY年MM月DD日")
51
+ * // Returns: year4, literal("年"), month2, literal("月"), day2, literal("日")
52
+ * ```
53
+ */
54
+ export function tokenizeDateTimeFormat(format) {
55
+ const tokens = [];
56
+ // Convert to array of codepoints to handle surrogate pairs correctly
57
+ const codePoints = Array.from(format);
58
+ let i = 0;
59
+ let literal = "";
60
+ /**
61
+ * Flushes accumulated literal characters as a single token.
62
+ */
63
+ const flushLiteral = () => {
64
+ if (literal) {
65
+ tokens.push(variant("literal", literal));
66
+ literal = "";
67
+ }
68
+ };
69
+ /**
70
+ * Attempts to match a format token pattern at current position.
71
+ *
72
+ * @param pattern - The pattern to match (e.g., "YYYY", "MM")
73
+ * @param tokenType - The token type to emit if matched
74
+ * @returns true if pattern matched and consumed, false otherwise
75
+ */
76
+ const tryMatch = (pattern, tokenType) => {
77
+ // Check if we have enough characters left
78
+ if (i + pattern.length > codePoints.length) {
79
+ return false;
80
+ }
81
+ // Check if the pattern matches
82
+ const slice = codePoints.slice(i, i + pattern.length).join("");
83
+ if (slice === pattern) {
84
+ flushLiteral();
85
+ tokens.push(variant(tokenType, null));
86
+ i += pattern.length;
87
+ return true;
88
+ }
89
+ return false;
90
+ };
91
+ while (i < codePoints.length) {
92
+ const char = codePoints[i];
93
+ // Handle escaping: \x produces literal x
94
+ if (char === "\\") {
95
+ if (i + 1 < codePoints.length) {
96
+ // Escape next character
97
+ literal += codePoints[i + 1];
98
+ i += 2;
99
+ continue;
100
+ }
101
+ else {
102
+ // Terminating backslash - treat as literal
103
+ literal += "\\";
104
+ i++;
105
+ continue;
106
+ }
107
+ }
108
+ // Try to match format tokens (longest patterns first)
109
+ // Year
110
+ if (tryMatch("YYYY", "year4") || tryMatch("YY", "year2")) {
111
+ continue;
112
+ }
113
+ // Month (MMMM before MMM before MM before M)
114
+ if (tryMatch("MMMM", "monthNameFull") ||
115
+ tryMatch("MMM", "monthNameShort") ||
116
+ tryMatch("MM", "month2") ||
117
+ tryMatch("M", "month1")) {
118
+ continue;
119
+ }
120
+ // Day of month
121
+ if (tryMatch("DD", "day2") || tryMatch("D", "day1")) {
122
+ continue;
123
+ }
124
+ // Day of week (dddd before ddd before dd)
125
+ if (tryMatch("dddd", "weekdayNameFull") ||
126
+ tryMatch("ddd", "weekdayNameShort") ||
127
+ tryMatch("dd", "weekdayNameMin")) {
128
+ continue;
129
+ }
130
+ // Hour 24h
131
+ if (tryMatch("HH", "hour24_2") || tryMatch("H", "hour24_1")) {
132
+ continue;
133
+ }
134
+ // Hour 12h
135
+ if (tryMatch("hh", "hour12_2") || tryMatch("h", "hour12_1")) {
136
+ continue;
137
+ }
138
+ // Minute
139
+ if (tryMatch("mm", "minute2") || tryMatch("m", "minute1")) {
140
+ continue;
141
+ }
142
+ // Second
143
+ if (tryMatch("ss", "second2") || tryMatch("s", "second1")) {
144
+ continue;
145
+ }
146
+ // Millisecond
147
+ if (tryMatch("SSS", "millisecond3")) {
148
+ continue;
149
+ }
150
+ // AM/PM
151
+ if (tryMatch("A", "ampmUpper") || tryMatch("a", "ampmLower")) {
152
+ continue;
153
+ }
154
+ // Not a format token - accumulate as literal
155
+ literal += char;
156
+ i++;
157
+ }
158
+ // Flush any remaining literal
159
+ flushLiteral();
160
+ return tokens;
161
+ }
162
+ /**
163
+ * Converts a token array back to a canonical format string.
164
+ *
165
+ * This produces a format string with minimal escaping - only escaping
166
+ * characters when they would otherwise be parsed as format tokens.
167
+ *
168
+ * @param tokens - Array of format tokens to stringify
169
+ * @param colorize - Whether to colorize format tokens with ANSI cyan (default: false)
170
+ * @returns A canonical format string that parses to the same tokens
171
+ *
172
+ * @remarks
173
+ * This is useful for debugging and error messages. When users write
174
+ * format strings with accidental format codes, showing the canonical
175
+ * version helps them understand what was parsed.
176
+ *
177
+ * When `colorize` is true, format tokens (e.g., "YYYY", "MM", "DD") are
178
+ * wrapped in ANSI escape codes to display in cyan, making them visually
179
+ * distinct from literal characters in terminal output.
180
+ *
181
+ * @example
182
+ * ```ts
183
+ * // Show user what their format string was interpreted as
184
+ * const tokens = parseDateTimeFormat("Today is YYYY");
185
+ * console.warn(`Parsed as: "${formatTokensToString(tokens)}"`);
186
+ * // Output: Parsed as: "Tod\ay i\s YYYY"
187
+ * ```
188
+ *
189
+ * @example
190
+ * ```ts
191
+ * // Colorized output for terminal
192
+ * const tokens = parseDateTimeFormat("YYYY-MM-DD");
193
+ * console.log(formatTokensToString(tokens, true));
194
+ * // Output: format tokens in cyan, literals in default color
195
+ * ```
196
+ */
197
+ export function formatTokensToString(tokens, colorize = false) {
198
+ // Map token types to their format patterns
199
+ const TOKEN_PATTERNS = {
200
+ year4: "YYYY",
201
+ year2: "YY",
202
+ month1: "M",
203
+ month2: "MM",
204
+ monthNameShort: "MMM",
205
+ monthNameFull: "MMMM",
206
+ day1: "D",
207
+ day2: "DD",
208
+ weekdayNameMin: "dd",
209
+ weekdayNameShort: "ddd",
210
+ weekdayNameFull: "dddd",
211
+ hour24_1: "H",
212
+ hour24_2: "HH",
213
+ hour12_1: "h",
214
+ hour12_2: "hh",
215
+ minute1: "m",
216
+ minute2: "mm",
217
+ second1: "s",
218
+ second2: "ss",
219
+ millisecond3: "SSS",
220
+ ampmUpper: "A",
221
+ ampmLower: "a",
222
+ };
223
+ // All format patterns in descending length order for greedy matching
224
+ const FORMAT_PATTERNS = [
225
+ "YYYY", "MMMM", "dddd", "SSS", "HH", "MM", "DD", "hh", "mm", "ss",
226
+ "YY", "MMM", "ddd", "dd", "H", "M", "D", "h", "m", "s", "A", "a",
227
+ ];
228
+ // ANSI escape codes for colorization
229
+ const CYAN = "\x1b[36m";
230
+ const RESET = "\x1b[0m";
231
+ return tokens.map(token => {
232
+ if (token.type === "literal") {
233
+ const chars = Array.from(token.value);
234
+ let result = "";
235
+ let i = 0;
236
+ while (i < chars.length) {
237
+ const remaining = chars.slice(i).join("");
238
+ // Check if remaining string starts with a format pattern
239
+ let matchedPattern = null;
240
+ for (const pattern of FORMAT_PATTERNS) {
241
+ if (remaining.startsWith(pattern)) {
242
+ matchedPattern = pattern;
243
+ break;
244
+ }
245
+ }
246
+ if (matchedPattern) {
247
+ // Escape first character to prevent token recognition
248
+ result += "\\" + chars[i];
249
+ i++;
250
+ }
251
+ else if (chars[i] === "\\") {
252
+ // Always escape backslashes
253
+ result += "\\\\";
254
+ i++;
255
+ }
256
+ else {
257
+ // Safe to emit as-is
258
+ result += chars[i];
259
+ i++;
260
+ }
261
+ }
262
+ return result;
263
+ }
264
+ else {
265
+ // Emit the format pattern for this token type
266
+ const pattern = TOKEN_PATTERNS[token.type];
267
+ return colorize ? `${CYAN}${pattern}${RESET}` : pattern;
268
+ }
269
+ }).join("");
270
+ }
271
+ //# sourceMappingURL=tokenize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenize.js","sourceRoot":"","sources":["../../../src/datetime_format/tokenize.ts"],"names":[],"mappings":"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"}