@n8n/expression-runtime 0.2.0 → 0.4.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 (192) hide show
  1. package/ARCHITECTURE.md +5 -6
  2. package/LICENSE_EE.md +27 -0
  3. package/README.md +11 -11
  4. package/dist/bundle/runtime.esm.js +45 -0
  5. package/dist/bundle/runtime.esm.js.map +7 -0
  6. package/dist/bundle/runtime.iife.js +45 -0
  7. package/dist/bundle/runtime.iife.js.map +7 -0
  8. package/dist/cjs/bridge/isolated-vm-bridge.d.ts +132 -0
  9. package/dist/cjs/bridge/isolated-vm-bridge.d.ts.map +1 -0
  10. package/dist/cjs/bridge/isolated-vm-bridge.js +500 -0
  11. package/dist/cjs/bridge/isolated-vm-bridge.js.map +1 -0
  12. package/dist/cjs/build.tsbuildinfo +1 -0
  13. package/dist/cjs/evaluator/expression-evaluator.d.ts +23 -0
  14. package/dist/cjs/evaluator/expression-evaluator.d.ts.map +1 -0
  15. package/dist/cjs/evaluator/expression-evaluator.js +87 -0
  16. package/dist/cjs/evaluator/expression-evaluator.js.map +1 -0
  17. package/dist/cjs/extensions/array-extensions.d.ts +34 -0
  18. package/dist/cjs/extensions/array-extensions.d.ts.map +1 -0
  19. package/dist/cjs/extensions/array-extensions.js +632 -0
  20. package/dist/cjs/extensions/array-extensions.js.map +1 -0
  21. package/dist/cjs/extensions/boolean-extensions.d.ts +6 -0
  22. package/dist/cjs/extensions/boolean-extensions.d.ts.map +1 -0
  23. package/dist/cjs/extensions/boolean-extensions.js +49 -0
  24. package/dist/cjs/extensions/boolean-extensions.js.map +1 -0
  25. package/dist/cjs/extensions/date-extensions.d.ts +3 -0
  26. package/dist/cjs/extensions/date-extensions.d.ts.map +1 -0
  27. package/dist/cjs/extensions/date-extensions.js +528 -0
  28. package/dist/cjs/extensions/date-extensions.js.map +1 -0
  29. package/dist/cjs/extensions/expression-extension-error.d.ts +7 -0
  30. package/dist/cjs/extensions/expression-extension-error.d.ts.map +1 -0
  31. package/dist/cjs/extensions/expression-extension-error.js +25 -0
  32. package/dist/cjs/extensions/expression-extension-error.js.map +1 -0
  33. package/dist/cjs/extensions/extend.d.ts +12 -0
  34. package/dist/cjs/extensions/extend.d.ts.map +1 -0
  35. package/dist/cjs/extensions/extend.js +149 -0
  36. package/dist/cjs/extensions/extend.js.map +1 -0
  37. package/dist/cjs/extensions/extensions.d.ts +43 -0
  38. package/dist/cjs/extensions/extensions.d.ts.map +1 -0
  39. package/dist/cjs/extensions/extensions.js +13 -0
  40. package/dist/cjs/extensions/extensions.js.map +1 -0
  41. package/dist/cjs/extensions/number-extensions.d.ts +27 -0
  42. package/dist/cjs/extensions/number-extensions.d.ts.map +1 -0
  43. package/dist/cjs/extensions/number-extensions.js +235 -0
  44. package/dist/cjs/extensions/number-extensions.js.map +1 -0
  45. package/dist/cjs/extensions/object-extensions.d.ts +46 -0
  46. package/dist/cjs/extensions/object-extensions.d.ts.map +1 -0
  47. package/dist/cjs/extensions/object-extensions.js +297 -0
  48. package/dist/cjs/extensions/object-extensions.js.map +1 -0
  49. package/dist/cjs/extensions/string-extensions.d.ts +38 -0
  50. package/dist/cjs/extensions/string-extensions.d.ts.map +1 -0
  51. package/dist/cjs/extensions/string-extensions.js +753 -0
  52. package/dist/cjs/extensions/string-extensions.js.map +1 -0
  53. package/dist/cjs/extensions/utils.d.ts +4 -0
  54. package/dist/cjs/extensions/utils.d.ts.map +1 -0
  55. package/dist/cjs/extensions/utils.js +42 -0
  56. package/dist/cjs/extensions/utils.js.map +1 -0
  57. package/dist/cjs/index.d.ts +7 -0
  58. package/dist/cjs/index.d.ts.map +1 -0
  59. package/dist/cjs/index.js +34 -0
  60. package/dist/cjs/index.js.map +1 -0
  61. package/dist/cjs/runtime/index.d.ts +17 -0
  62. package/dist/cjs/runtime/index.d.ts.map +1 -0
  63. package/dist/cjs/runtime/index.js +35 -0
  64. package/dist/cjs/runtime/index.js.map +1 -0
  65. package/dist/cjs/runtime/lazy-proxy.d.ts +22 -0
  66. package/dist/cjs/runtime/lazy-proxy.d.ts.map +1 -0
  67. package/dist/cjs/runtime/lazy-proxy.js +179 -0
  68. package/dist/cjs/runtime/lazy-proxy.js.map +1 -0
  69. package/dist/cjs/runtime/reset.d.ts +16 -0
  70. package/dist/cjs/runtime/reset.d.ts.map +1 -0
  71. package/dist/cjs/runtime/reset.js +137 -0
  72. package/dist/cjs/runtime/reset.js.map +1 -0
  73. package/dist/cjs/runtime/safe-globals.d.ts +21 -0
  74. package/dist/cjs/runtime/safe-globals.d.ts.map +1 -0
  75. package/dist/cjs/runtime/safe-globals.js +125 -0
  76. package/dist/cjs/runtime/safe-globals.js.map +1 -0
  77. package/dist/{types → cjs/types}/bridge.d.ts +2 -0
  78. package/dist/cjs/types/bridge.d.ts.map +1 -0
  79. package/dist/cjs/types/bridge.js +26 -0
  80. package/dist/cjs/types/bridge.js.map +1 -0
  81. package/dist/{types → cjs/types}/evaluator.d.ts +1 -4
  82. package/dist/cjs/types/evaluator.d.ts.map +1 -0
  83. package/dist/cjs/types/evaluator.js +47 -0
  84. package/dist/cjs/types/evaluator.js.map +1 -0
  85. package/dist/{types → cjs/types}/index.d.ts +2 -2
  86. package/dist/cjs/types/index.d.ts.map +1 -0
  87. package/dist/cjs/types/index.js +30 -0
  88. package/dist/cjs/types/index.js.map +1 -0
  89. package/dist/cjs/types/runtime.d.ts +20 -0
  90. package/dist/cjs/types/runtime.d.ts.map +1 -0
  91. package/dist/cjs/types/runtime.js +39 -0
  92. package/dist/cjs/types/runtime.js.map +1 -0
  93. package/dist/esm/bridge/isolated-vm-bridge.d.ts +132 -0
  94. package/dist/esm/bridge/isolated-vm-bridge.d.ts.map +1 -0
  95. package/dist/esm/bridge/isolated-vm-bridge.js +450 -0
  96. package/dist/esm/bridge/isolated-vm-bridge.js.map +1 -0
  97. package/dist/esm/build.tsbuildinfo +1 -0
  98. package/dist/esm/evaluator/expression-evaluator.d.ts +23 -0
  99. package/dist/esm/evaluator/expression-evaluator.d.ts.map +1 -0
  100. package/dist/esm/evaluator/expression-evaluator.js +73 -0
  101. package/dist/esm/evaluator/expression-evaluator.js.map +1 -0
  102. package/dist/esm/extensions/array-extensions.d.ts +34 -0
  103. package/dist/esm/extensions/array-extensions.d.ts.map +1 -0
  104. package/dist/esm/extensions/array-extensions.js +610 -0
  105. package/dist/esm/extensions/array-extensions.js.map +1 -0
  106. package/dist/esm/extensions/boolean-extensions.d.ts +6 -0
  107. package/dist/esm/extensions/boolean-extensions.d.ts.map +1 -0
  108. package/dist/esm/extensions/boolean-extensions.js +33 -0
  109. package/dist/esm/extensions/boolean-extensions.js.map +1 -0
  110. package/dist/esm/extensions/date-extensions.d.ts +3 -0
  111. package/dist/esm/extensions/date-extensions.d.ts.map +1 -0
  112. package/dist/esm/extensions/date-extensions.js +515 -0
  113. package/dist/esm/extensions/date-extensions.js.map +1 -0
  114. package/dist/esm/extensions/expression-extension-error.d.ts +7 -0
  115. package/dist/esm/extensions/expression-extension-error.d.ts.map +1 -0
  116. package/dist/esm/extensions/expression-extension-error.js +11 -0
  117. package/dist/esm/extensions/expression-extension-error.js.map +1 -0
  118. package/dist/esm/extensions/extend.d.ts +12 -0
  119. package/dist/esm/extensions/extend.d.ts.map +1 -0
  120. package/dist/esm/extensions/extend.js +134 -0
  121. package/dist/esm/extensions/extend.js.map +1 -0
  122. package/dist/esm/extensions/extensions.d.ts +43 -0
  123. package/dist/esm/extensions/extensions.d.ts.map +1 -0
  124. package/dist/esm/extensions/extensions.js +2 -0
  125. package/dist/esm/extensions/extensions.js.map +1 -0
  126. package/dist/esm/extensions/number-extensions.d.ts +27 -0
  127. package/dist/esm/extensions/number-extensions.d.ts.map +1 -0
  128. package/dist/esm/extensions/number-extensions.js +221 -0
  129. package/dist/esm/extensions/number-extensions.js.map +1 -0
  130. package/dist/esm/extensions/object-extensions.d.ts +46 -0
  131. package/dist/esm/extensions/object-extensions.d.ts.map +1 -0
  132. package/dist/esm/extensions/object-extensions.js +277 -0
  133. package/dist/esm/extensions/object-extensions.js.map +1 -0
  134. package/dist/esm/extensions/string-extensions.d.ts +38 -0
  135. package/dist/esm/extensions/string-extensions.d.ts.map +1 -0
  136. package/dist/esm/extensions/string-extensions.js +735 -0
  137. package/dist/esm/extensions/string-extensions.js.map +1 -0
  138. package/dist/esm/extensions/utils.d.ts +4 -0
  139. package/dist/esm/extensions/utils.d.ts.map +1 -0
  140. package/dist/esm/extensions/utils.js +27 -0
  141. package/dist/esm/extensions/utils.js.map +1 -0
  142. package/dist/esm/index.d.ts +7 -0
  143. package/dist/esm/index.d.ts.map +1 -0
  144. package/dist/esm/index.js +10 -0
  145. package/dist/esm/index.js.map +1 -0
  146. package/dist/esm/runtime/index.d.ts +17 -0
  147. package/dist/esm/runtime/index.d.ts.map +1 -0
  148. package/dist/esm/runtime/index.js +23 -0
  149. package/dist/esm/runtime/index.js.map +1 -0
  150. package/dist/esm/runtime/lazy-proxy.d.ts +22 -0
  151. package/dist/esm/runtime/lazy-proxy.d.ts.map +1 -0
  152. package/dist/esm/runtime/lazy-proxy.js +164 -0
  153. package/dist/esm/runtime/lazy-proxy.js.map +1 -0
  154. package/dist/esm/runtime/reset.d.ts +16 -0
  155. package/dist/esm/runtime/reset.d.ts.map +1 -0
  156. package/dist/esm/runtime/reset.js +124 -0
  157. package/dist/esm/runtime/reset.js.map +1 -0
  158. package/dist/esm/runtime/safe-globals.d.ts +21 -0
  159. package/dist/esm/runtime/safe-globals.d.ts.map +1 -0
  160. package/dist/esm/runtime/safe-globals.js +110 -0
  161. package/dist/esm/runtime/safe-globals.js.map +1 -0
  162. package/dist/esm/types/bridge.d.ts +63 -0
  163. package/dist/esm/types/bridge.d.ts.map +1 -0
  164. package/dist/{types → esm/types}/bridge.js +6 -1
  165. package/dist/esm/types/bridge.js.map +1 -0
  166. package/dist/esm/types/evaluator.d.ts +194 -0
  167. package/dist/esm/types/evaluator.d.ts.map +1 -0
  168. package/dist/esm/types/evaluator.js.map +1 -0
  169. package/dist/esm/types/index.d.ts +11 -0
  170. package/dist/esm/types/index.d.ts.map +1 -0
  171. package/dist/{types → esm/types}/index.js +2 -0
  172. package/dist/esm/types/index.js.map +1 -0
  173. package/dist/esm/types/runtime.d.ts +20 -0
  174. package/dist/esm/types/runtime.d.ts.map +1 -0
  175. package/dist/{types → esm/types}/runtime.js +0 -6
  176. package/dist/esm/types/runtime.js.map +1 -0
  177. package/package.json +29 -6
  178. package/dist/build.tsbuildinfo +0 -1
  179. package/dist/index.d.ts +0 -3
  180. package/dist/index.d.ts.map +0 -1
  181. package/dist/index.js +0 -2
  182. package/dist/index.js.map +0 -1
  183. package/dist/types/bridge.d.ts.map +0 -1
  184. package/dist/types/bridge.js.map +0 -1
  185. package/dist/types/evaluator.d.ts.map +0 -1
  186. package/dist/types/evaluator.js.map +0 -1
  187. package/dist/types/index.d.ts.map +0 -1
  188. package/dist/types/index.js.map +0 -1
  189. package/dist/types/runtime.d.ts +0 -122
  190. package/dist/types/runtime.d.ts.map +0 -1
  191. package/dist/types/runtime.js.map +0 -1
  192. /package/dist/{types → esm/types}/evaluator.js +0 -0
@@ -0,0 +1,33 @@
1
+ export function toBoolean(value) {
2
+ return value;
3
+ }
4
+ export function toInt(value) {
5
+ return value ? 1 : 0;
6
+ }
7
+ export function toDateTime() {
8
+ return undefined;
9
+ }
10
+ const toFloat = toInt;
11
+ const toNumber = toInt.bind({});
12
+ toNumber.doc = {
13
+ name: 'toNumber',
14
+ description: 'Converts <code>true</code> to <code>1</code> and <code>false</code> to <code>0</code>.',
15
+ examples: [
16
+ { example: 'true.toNumber()', evaluated: '1' },
17
+ { example: 'false.toNumber()', evaluated: '0' },
18
+ ],
19
+ section: 'cast',
20
+ returnType: 'number',
21
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/booleans/#boolean-toNumber',
22
+ };
23
+ export const booleanExtensions = {
24
+ typeName: 'Boolean',
25
+ functions: {
26
+ toBoolean,
27
+ toInt,
28
+ toFloat,
29
+ toNumber,
30
+ toDateTime,
31
+ },
32
+ };
33
+ //# sourceMappingURL=boolean-extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boolean-extensions.js","sourceRoot":"","sources":["../../../src/extensions/boolean-extensions.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CAAC,KAAc;IACvC,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAAc;IACnC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,UAAU;IACzB,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,GAAG,KAAK,CAAC;AACtB,MAAM,QAAQ,GAAc,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAE3C,QAAQ,CAAC,GAAG,GAAG;IACd,IAAI,EAAE,UAAU;IAChB,WAAW,EACV,wFAAwF;IACzF,QAAQ,EAAE;QACT,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,EAAE;QAC9C,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,GAAG,EAAE;KAC/C;IACD,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,MAAM,EACL,2FAA2F;CAC5F,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC9C,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE;QACV,SAAS;QACT,KAAK;QACL,OAAO;QACP,QAAQ;QACR,UAAU;KACV;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ExtensionMap } from './extensions';
2
+ export declare const dateExtensions: ExtensionMap;
3
+ //# sourceMappingURL=date-extensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-extensions.d.ts","sourceRoot":"","sources":["../../../src/extensions/date-extensions.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA+kBjD,eAAO,MAAM,cAAc,EAAE,YAsB5B,CAAC"}
@@ -0,0 +1,515 @@
1
+ import { DateTime } from 'luxon';
2
+ import { ExpressionExtensionError } from './expression-extension-error';
3
+ import { toDateTime as stringToDateTime } from './string-extensions';
4
+ import { convertToDateTime } from './utils';
5
+ const durationUnits = [
6
+ 'milliseconds',
7
+ 'seconds',
8
+ 'minutes',
9
+ 'hours',
10
+ 'days',
11
+ 'weeks',
12
+ 'months',
13
+ 'quarters',
14
+ 'years',
15
+ ];
16
+ const dateParts = [
17
+ 'day',
18
+ 'week',
19
+ 'month',
20
+ 'year',
21
+ 'hour',
22
+ 'minute',
23
+ 'second',
24
+ 'millisecond',
25
+ 'weekNumber',
26
+ 'yearDayNumber',
27
+ 'weekday',
28
+ ];
29
+ const DURATION_MAP = {
30
+ day: 'days',
31
+ month: 'months',
32
+ year: 'years',
33
+ week: 'weeks',
34
+ hour: 'hours',
35
+ minute: 'minutes',
36
+ second: 'seconds',
37
+ millisecond: 'milliseconds',
38
+ ms: 'milliseconds',
39
+ sec: 'seconds',
40
+ secs: 'seconds',
41
+ hr: 'hours',
42
+ hrs: 'hours',
43
+ min: 'minutes',
44
+ mins: 'minutes',
45
+ };
46
+ const DATETIMEUNIT_MAP = {
47
+ days: 'day',
48
+ months: 'month',
49
+ years: 'year',
50
+ hours: 'hour',
51
+ minutes: 'minute',
52
+ seconds: 'second',
53
+ milliseconds: 'millisecond',
54
+ hrs: 'hour',
55
+ hr: 'hour',
56
+ mins: 'minute',
57
+ min: 'minute',
58
+ secs: 'second',
59
+ sec: 'second',
60
+ ms: 'millisecond',
61
+ };
62
+ function isDateTime(date) {
63
+ return date ? DateTime.isDateTime(date) : false;
64
+ }
65
+ function toDateTime(date) {
66
+ if (isDateTime(date))
67
+ return date;
68
+ if (typeof date === 'string') {
69
+ return stringToDateTime(date);
70
+ }
71
+ return DateTime.fromJSDate(date);
72
+ }
73
+ function generateDurationObject(durationValue, unit) {
74
+ const convertedUnit = DURATION_MAP[unit] || unit;
75
+ return { [`${convertedUnit}`]: durationValue };
76
+ }
77
+ function beginningOf(date, extraArgs) {
78
+ const [rawUnit = 'week'] = extraArgs;
79
+ const unit = DATETIMEUNIT_MAP[rawUnit] || rawUnit;
80
+ if (isDateTime(date))
81
+ return date.startOf(unit);
82
+ return DateTime.fromJSDate(date).startOf(unit).toJSDate();
83
+ }
84
+ function endOfMonth(date) {
85
+ if (isDateTime(date))
86
+ return date.endOf('month');
87
+ return DateTime.fromJSDate(date).endOf('month').toJSDate();
88
+ }
89
+ function extract(date, args) {
90
+ let [part = 'week'] = args;
91
+ if (part === 'yearDayNumber') {
92
+ date = isDateTime(date) ? date.toJSDate() : date;
93
+ const firstDayOfTheYear = new Date(date.getFullYear(), 0, 0);
94
+ const diff = date.getTime() -
95
+ firstDayOfTheYear.getTime() +
96
+ (firstDayOfTheYear.getTimezoneOffset() - date.getTimezoneOffset()) * 60 * 1000;
97
+ return Math.floor(diff / (1000 * 60 * 60 * 24));
98
+ }
99
+ if (part === 'week')
100
+ part = 'weekNumber';
101
+ const unit = DATETIMEUNIT_MAP[part] || part;
102
+ if (isDateTime(date))
103
+ return date.get(unit);
104
+ return DateTime.fromJSDate(date).get(unit);
105
+ }
106
+ function format(date, extraArgs) {
107
+ const [dateFormat, localeOpts = {}] = extraArgs;
108
+ if (isDateTime(date)) {
109
+ return date.toFormat(dateFormat, { ...localeOpts });
110
+ }
111
+ return DateTime.fromJSDate(date).toFormat(dateFormat, { ...localeOpts });
112
+ }
113
+ function isBetween(date, extraArgs) {
114
+ if (extraArgs.length !== 2) {
115
+ throw new ExpressionExtensionError('isBetween(): expected exactly two args');
116
+ }
117
+ const [first, second] = extraArgs;
118
+ const firstDate = convertToDateTime(first);
119
+ const secondDate = convertToDateTime(second);
120
+ if (!firstDate || !secondDate) {
121
+ return;
122
+ }
123
+ if (firstDate > secondDate) {
124
+ return secondDate < date && date < firstDate;
125
+ }
126
+ return secondDate > date && date > firstDate;
127
+ }
128
+ function isDst(date) {
129
+ if (isDateTime(date)) {
130
+ return date.isInDST;
131
+ }
132
+ return DateTime.fromJSDate(date).isInDST;
133
+ }
134
+ function isInLast(date, extraArgs) {
135
+ const [durationValue = 0, unit = 'minutes'] = extraArgs;
136
+ const dateInThePast = DateTime.now().minus(generateDurationObject(durationValue, unit));
137
+ let thisDate = date;
138
+ if (!isDateTime(thisDate)) {
139
+ thisDate = DateTime.fromJSDate(thisDate);
140
+ }
141
+ return dateInThePast <= thisDate && thisDate <= DateTime.now();
142
+ }
143
+ const WEEKEND_DAYS = [6, 7];
144
+ function isWeekend(date) {
145
+ const { weekday } = isDateTime(date) ? date : DateTime.fromJSDate(date);
146
+ return WEEKEND_DAYS.includes(weekday);
147
+ }
148
+ function minus(date, args) {
149
+ if (args.length === 1) {
150
+ const [arg] = args;
151
+ if (isDateTime(date))
152
+ return date.minus(arg);
153
+ return DateTime.fromJSDate(date).minus(arg).toJSDate();
154
+ }
155
+ const [durationValue = 0, unit = 'minutes'] = args;
156
+ const duration = generateDurationObject(durationValue, unit);
157
+ if (isDateTime(date))
158
+ return date.minus(duration);
159
+ return DateTime.fromJSDate(date).minus(duration).toJSDate();
160
+ }
161
+ function plus(date, args) {
162
+ if (args.length === 1) {
163
+ const [arg] = args;
164
+ if (isDateTime(date))
165
+ return date.plus(arg);
166
+ return DateTime.fromJSDate(date).plus(arg).toJSDate();
167
+ }
168
+ const [durationValue = 0, unit = 'minutes'] = args;
169
+ const duration = generateDurationObject(durationValue, unit);
170
+ if (isDateTime(date))
171
+ return date.plus(duration);
172
+ return DateTime.fromJSDate(date).plus(duration).toJSDate();
173
+ }
174
+ function diffTo(date, args) {
175
+ const [otherDate, unit = 'days'] = args;
176
+ let units = Array.isArray(unit) ? unit : [unit];
177
+ if (units.length === 0) {
178
+ units = ['days'];
179
+ }
180
+ const allowedUnitSet = new Set([...dateParts, ...durationUnits]);
181
+ const errorUnit = units.find((u) => !allowedUnitSet.has(u));
182
+ if (errorUnit) {
183
+ throw new ExpressionExtensionError(`Unsupported unit '${String(errorUnit)}'. Supported: ${durationUnits
184
+ .map((u) => `'${u}'`)
185
+ .join(', ')}.`);
186
+ }
187
+ const diffResult = date.diff(toDateTime(otherDate), units);
188
+ if (units.length > 1) {
189
+ return diffResult.toObject();
190
+ }
191
+ return diffResult.as(units[0]);
192
+ }
193
+ function diffToNow(date, args) {
194
+ const [unit] = args;
195
+ return diffTo(date, [DateTime.now(), unit]);
196
+ }
197
+ function toInt(date) {
198
+ if (isDateTime(date)) {
199
+ return date.toMillis();
200
+ }
201
+ return date.getTime();
202
+ }
203
+ const toFloat = toInt;
204
+ function toBoolean() {
205
+ return undefined;
206
+ }
207
+ // Only null/undefined return true, this is handled in ExpressionExtension.ts
208
+ function isEmpty() {
209
+ return false;
210
+ }
211
+ function isNotEmpty() {
212
+ return true;
213
+ }
214
+ endOfMonth.doc = {
215
+ name: 'endOfMonth',
216
+ returnType: 'DateTime',
217
+ hidden: true,
218
+ description: 'Transforms a date to the last possible moment that lies within the month.',
219
+ section: 'edit',
220
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/dates/#date-endOfMonth',
221
+ };
222
+ isDst.doc = {
223
+ name: 'isDst',
224
+ returnType: 'boolean',
225
+ hidden: true,
226
+ description: 'Checks if a Date is within Daylight Savings Time.',
227
+ section: 'query',
228
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/dates/#date-isDst',
229
+ };
230
+ isWeekend.doc = {
231
+ name: 'isWeekend',
232
+ returnType: 'boolean',
233
+ hidden: true,
234
+ description: 'Checks if the Date falls on a Saturday or Sunday.',
235
+ section: 'query',
236
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/dates/#date-isWeekend',
237
+ };
238
+ beginningOf.doc = {
239
+ name: 'beginningOf',
240
+ description: 'Transform a Date to the start of the given time period. Default unit is `week`.',
241
+ section: 'edit',
242
+ hidden: true,
243
+ returnType: 'DateTime',
244
+ args: [{ name: 'unit?', type: 'DurationUnit' }],
245
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/dates/#date-beginningOf',
246
+ };
247
+ extract.doc = {
248
+ name: 'extract',
249
+ description: 'Extracts a part of the date or time, e.g. the month, as a number. To extract textual names instead, see <code>format()</code>.',
250
+ examples: [
251
+ { example: "dt = '2024-03-30T18:49'.toDateTime()\ndt.extract('month')", evaluated: '3' },
252
+ { example: "dt = '2024-03-30T18:49'.toDateTime()\ndt.extract('hour')", evaluated: '18' },
253
+ ],
254
+ section: 'query',
255
+ returnType: 'number',
256
+ args: [
257
+ {
258
+ name: 'unit',
259
+ optional: true,
260
+ description: 'The part of the date or time to return. One of: <code>year</code>, <code>month</code>, <code>week</code>, <code>day</code>, <code>hour</code>, <code>minute</code>, <code>second</code>',
261
+ default: '"week"',
262
+ type: 'string',
263
+ },
264
+ ],
265
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/dates/#date-extract',
266
+ };
267
+ format.doc = {
268
+ name: 'format',
269
+ description: 'Converts the DateTime to a string, using the format specified. <a target="_blank" href="https://moment.github.io/luxon/#/formatting?id=table-of-tokens">Formatting guide</a>. For common formats, <code>toLocaleString()</code> may be easier.',
270
+ examples: [
271
+ {
272
+ example: "dt = '2024-04-30T18:49'.toDateTime()\ndt.format('dd/LL/yyyy')",
273
+ evaluated: "'30/04/2024'",
274
+ },
275
+ {
276
+ example: "dt = '2024-04-30T18:49'.toDateTime()\ndt.format('dd LLL yy')",
277
+ evaluated: "'30 Apr 24'",
278
+ },
279
+ {
280
+ example: "dt = '2024-04-30T18:49'.toDateTime()\ndt.setLocale('fr').format('dd LLL yyyy')",
281
+ evaluated: "'30 avr. 2024'",
282
+ },
283
+ {
284
+ example: "dt = '2024-04-30T18:49'.toDateTime()\ndt.format(\"HH 'hours and' mm 'minutes'\")",
285
+ evaluated: "'18 hours and 49 minutes'",
286
+ },
287
+ ],
288
+ returnType: 'string',
289
+ section: 'format',
290
+ args: [
291
+ {
292
+ name: 'fmt',
293
+ description: 'The <a target="_blank" href="https://moment.github.io/luxon/#/formatting?id=table-of-tokens">format</a> of the string to return ',
294
+ default: "'yyyy-MM-dd'",
295
+ type: 'string',
296
+ },
297
+ ],
298
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/dates/#date-format',
299
+ };
300
+ isBetween.doc = {
301
+ name: 'isBetween',
302
+ description: 'Returns <code>true</code> if the DateTime lies between the two moments specified',
303
+ examples: [
304
+ {
305
+ example: "dt = '2024-03-30T18:49'.toDateTime()\ndt.isBetween('2020-06-01', '2025-06-01')",
306
+ evaluated: 'true',
307
+ },
308
+ {
309
+ example: "dt = '2024-03-30T18:49'.toDateTime()\ndt.isBetween('2020', '2025')",
310
+ evaluated: 'true',
311
+ },
312
+ ],
313
+ section: 'compare',
314
+ returnType: 'boolean',
315
+ args: [
316
+ {
317
+ name: 'date1',
318
+ description: 'The moment that the base DateTime must be after. Can be an ISO date string or a Luxon DateTime.',
319
+ type: 'string | DateTime',
320
+ },
321
+ {
322
+ name: 'date2',
323
+ description: 'The moment that the base DateTime must be before. Can be an ISO date string or a Luxon DateTime.',
324
+ type: 'string | DateTime',
325
+ },
326
+ ],
327
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/dates/#date-isBetween',
328
+ };
329
+ isInLast.doc = {
330
+ name: 'isInLast',
331
+ hidden: true,
332
+ description: 'Checks if a Date is within a given time period. Default unit is `minute`.',
333
+ section: 'query',
334
+ returnType: 'boolean',
335
+ args: [
336
+ { name: 'n', type: 'number' },
337
+ { name: 'unit?', type: 'DurationUnit' },
338
+ ],
339
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/dates/#date-isInLast',
340
+ };
341
+ toDateTime.doc = {
342
+ name: 'toDateTime',
343
+ description: 'Converts a JavaScript Date to a Luxon DateTime. The DateTime contains the same information, but is easier to manipulate.',
344
+ examples: [
345
+ {
346
+ example: "jsDate = new Date('2024-03-30T18:49')\njsDate.toDateTime().plus(5, 'days')",
347
+ evaluated: '[DateTime: 2024-05-05T18:49:00.000Z]',
348
+ },
349
+ ],
350
+ returnType: 'DateTime',
351
+ hidden: true,
352
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/dates/#date-toDateTime',
353
+ };
354
+ minus.doc = {
355
+ name: 'minus',
356
+ description: 'Subtracts a given period of time from the DateTime',
357
+ examples: [
358
+ {
359
+ example: "dt = '2024-03-30T18:49'.toDateTime()\ndt.minus(7, 'days')",
360
+ evaluated: '[DateTime: 2024-04-23T18:49:00.000Z]',
361
+ },
362
+ {
363
+ example: "dt = '2024-03-30T18:49'.toDateTime()\ndt.minus(4, 'years')",
364
+ evaluated: '[DateTime: 2020-04-30T18:49:00.000Z]',
365
+ },
366
+ ],
367
+ section: 'edit',
368
+ returnType: 'DateTime',
369
+ args: [
370
+ {
371
+ name: 'n',
372
+ description: 'The number of units to subtract. Or use a Luxon <a target="_blank" href="https://moment.github.io/luxon/api-docs/index.html#duration">Duration</a> object to subtract multiple units at once.',
373
+ type: 'number | object',
374
+ },
375
+ {
376
+ name: 'unit',
377
+ optional: true,
378
+ description: 'The units of the number. One of: <code>years</code>, <code>months</code>, <code>weeks</code>, <code>days</code>, <code>hours</code>, <code>minutes</code>, <code>seconds</code>, <code>milliseconds</code>',
379
+ default: '"milliseconds"',
380
+ type: 'string',
381
+ },
382
+ ],
383
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/dates/#date-minus',
384
+ };
385
+ plus.doc = {
386
+ name: 'plus',
387
+ description: 'Adds a given period of time to the DateTime',
388
+ examples: [
389
+ {
390
+ example: "dt = '2024-03-30T18:49'.toDateTime()\ndt.plus(7, 'days')",
391
+ evaluated: '[DateTime: 2024-04-07T18:49:00.000Z]',
392
+ },
393
+ {
394
+ example: "dt = '2024-03-30T18:49'.toDateTime()\ndt.plus(4, 'years')",
395
+ evaluated: '[DateTime: 2028-03-30T18:49:00.000Z]',
396
+ },
397
+ ],
398
+ section: 'edit',
399
+ returnType: 'DateTime',
400
+ args: [
401
+ {
402
+ name: 'n',
403
+ description: 'The number of units to add. Or use a Luxon <a target="_blank" href="https://moment.github.io/luxon/api-docs/index.html#duration">Duration</a> object to add multiple units at once.',
404
+ type: 'number | object',
405
+ },
406
+ {
407
+ name: 'unit',
408
+ optional: true,
409
+ description: 'The units of the number. One of: <code>years</code>, <code>months</code>, <code>weeks</code>, <code>days</code>, <code>hours</code>, <code>minutes</code>, <code>seconds</code>, <code>milliseconds</code>',
410
+ default: '"milliseconds"',
411
+ type: 'string',
412
+ },
413
+ ],
414
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/dates/#date-plus',
415
+ };
416
+ diffTo.doc = {
417
+ name: 'diffTo',
418
+ description: 'Returns the difference between two DateTimes, in the given unit(s)',
419
+ examples: [
420
+ {
421
+ example: "dt = '2025-01-01'.toDateTime()\ndt.diffTo('2024-03-30T18:49:07.234', 'days')",
422
+ evaluated: '276.21',
423
+ },
424
+ {
425
+ example: "dt1 = '2025-01-01T00:00:00.000'.toDateTime();\ndt2 = '2024-03-30T18:49:07.234'.toDateTime();\ndt1.diffTo(dt2, ['months', 'days'])",
426
+ evaluated: '{ months: 9, days: 1.21 }',
427
+ },
428
+ ],
429
+ section: 'compare',
430
+ returnType: 'number | Record<DurationUnit, number>',
431
+ args: [
432
+ {
433
+ name: 'otherDateTime',
434
+ default: '$now',
435
+ description: 'The moment to subtract the base DateTime from. Can be an ISO date string or a Luxon DateTime.',
436
+ type: 'string | DateTime',
437
+ },
438
+ {
439
+ name: 'unit',
440
+ default: "'days'",
441
+ description: 'The unit, or array of units, to return the result in. Possible values: <code>years</code>, <code>months</code>, <code>weeks</code>, <code>days</code>, <code>hours</code>, <code>minutes</code>, <code>seconds</code>, <code>milliseconds</code>.',
442
+ type: 'string | string[]',
443
+ },
444
+ ],
445
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/dates/#date-diffTo',
446
+ };
447
+ diffToNow.doc = {
448
+ name: 'diffToNow',
449
+ description: 'Returns the difference between the current moment and the DateTime, in the given unit(s). For a textual representation, use <code>toRelative()</code> instead.',
450
+ examples: [
451
+ {
452
+ example: "dt = '2023-03-30T18:49:07.234'.toDateTime()\ndt.diffToNow('days')",
453
+ evaluated: '371.9',
454
+ },
455
+ {
456
+ example: "dt = '2023-03-30T18:49:07.234'.toDateTime()\ndt.diffToNow(['months', 'days'])",
457
+ evaluated: '{ months: 12, days: 5.9 }',
458
+ },
459
+ ],
460
+ section: 'compare',
461
+ returnType: 'number | Record<DurationUnit, number>',
462
+ args: [
463
+ {
464
+ name: 'unit',
465
+ description: 'The unit, or array of units, to return the result in. Possible values: <code>years</code>, <code>months</code>, <code>weeks</code>, <code>days</code>, <code>hours</code>, <code>minutes</code>, <code>seconds</code>, <code>milliseconds</code>.',
466
+ default: "'days'",
467
+ type: 'string | string[]',
468
+ },
469
+ ],
470
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/dates/#date-diffToNow',
471
+ };
472
+ isEmpty.doc = {
473
+ name: 'isEmpty',
474
+ description: 'Returns <code>false</code> for all DateTimes. Returns <code>true</code> for <code>null</code>.',
475
+ examples: [
476
+ { example: "dt = '2023-03-30T18:49:07.234'.toDateTime()\ndt.isEmpty()", evaluated: 'false' },
477
+ { example: 'dt = null\ndt.isEmpty()', evaluated: 'true' },
478
+ ],
479
+ returnType: 'boolean',
480
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/arrays/#array-isEmpty',
481
+ };
482
+ isNotEmpty.doc = {
483
+ name: 'isNotEmpty',
484
+ description: 'Returns <code>true</code> for all DateTimes. Returns <code>false</code> for <code>null</code>.',
485
+ examples: [
486
+ { example: "dt = '2023-03-30T18:49:07.234'.toDateTime()\ndt.isNotEmpty()", evaluated: 'true' },
487
+ { example: 'dt = null\ndt.isNotEmpty()', evaluated: 'false' },
488
+ ],
489
+ returnType: 'boolean',
490
+ docURL: 'https://docs.n8n.io/code/builtin/data-transformation-functions/arrays/#array-isNotEmpty',
491
+ };
492
+ export const dateExtensions = {
493
+ typeName: 'Date',
494
+ functions: {
495
+ beginningOf,
496
+ endOfMonth,
497
+ extract,
498
+ isBetween,
499
+ isDst,
500
+ isInLast,
501
+ isWeekend,
502
+ minus,
503
+ plus,
504
+ format,
505
+ toDateTime,
506
+ diffTo,
507
+ diffToNow,
508
+ toInt,
509
+ toFloat,
510
+ toBoolean,
511
+ isEmpty,
512
+ isNotEmpty,
513
+ },
514
+ };
515
+ //# sourceMappingURL=date-extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-extensions.js","sourceRoot":"","sources":["../../../src/extensions/date-extensions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare class ExpressionExtensionError extends Error {
2
+ description?: string;
3
+ constructor(message: string, options?: {
4
+ description?: string;
5
+ });
6
+ }
7
+ //# sourceMappingURL=expression-extension-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-extension-error.d.ts","sourceRoot":"","sources":["../../../src/extensions/expression-extension-error.ts"],"names":[],"mappings":"AAAA,qBAAa,wBAAyB,SAAQ,KAAK;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;gBAET,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;CAO/D"}
@@ -0,0 +1,11 @@
1
+ export class ExpressionExtensionError extends Error {
2
+ description;
3
+ constructor(message, options) {
4
+ super(message);
5
+ this.name = 'ExpressionExtensionError';
6
+ if (options?.description !== undefined) {
7
+ this.description = options.description;
8
+ }
9
+ }
10
+ }
11
+ //# sourceMappingURL=expression-extension-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-extension-error.js","sourceRoot":"","sources":["../../../src/extensions/expression-extension-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAClD,WAAW,CAAU;IAErB,YAAY,OAAe,EAAE,OAAkC;QAC9D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACxC,CAAC;IACF,CAAC;CACD"}
@@ -0,0 +1,12 @@
1
+ import type { ExtensionMap } from './extensions';
2
+ export declare const EXTENSION_OBJECTS: ExtensionMap[];
3
+ /**
4
+ * Extender function injected by expression extension plugin to allow calls to extensions.
5
+ *
6
+ * ```ts
7
+ * extend(input, "functionName", [...args]);
8
+ * ```
9
+ */
10
+ export declare function extend(input: unknown, functionName: string, args: unknown[]): any;
11
+ export declare function extendOptional(input: unknown, functionName: string): Function | undefined;
12
+ //# sourceMappingURL=extend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend.d.ts","sourceRoot":"","sources":["../../../src/extensions/extend.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAejD,eAAO,MAAM,iBAAiB,EAAE,YAAY,EAO3C,CAAC;AAsEF;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAkC3E;AAED,wBAAgB,cAAc,CAC7B,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,MAAM,GAElB,QAAQ,GAAG,SAAS,CAgBtB"}