@servicenow/sdk-build-plugins 4.4.0 → 4.5.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 (287) hide show
  1. package/dist/acl-plugin.js +54 -4
  2. package/dist/acl-plugin.js.map +1 -1
  3. package/dist/applicability-plugin.js +2 -0
  4. package/dist/applicability-plugin.js.map +1 -1
  5. package/dist/application-menu-plugin.js +2 -0
  6. package/dist/application-menu-plugin.js.map +1 -1
  7. package/dist/arrow-function-plugin.d.ts +6 -1
  8. package/dist/arrow-function-plugin.js +105 -12
  9. package/dist/arrow-function-plugin.js.map +1 -1
  10. package/dist/atf/test-plugin.js +2 -0
  11. package/dist/atf/test-plugin.js.map +1 -1
  12. package/dist/basic-syntax-plugin.js +20 -0
  13. package/dist/basic-syntax-plugin.js.map +1 -1
  14. package/dist/call-expression-plugin.js +1 -0
  15. package/dist/call-expression-plugin.js.map +1 -1
  16. package/dist/claims-plugin.js +1 -0
  17. package/dist/claims-plugin.js.map +1 -1
  18. package/dist/client-script-plugin.js +1 -0
  19. package/dist/client-script-plugin.js.map +1 -1
  20. package/dist/column-plugin.js +1 -0
  21. package/dist/column-plugin.js.map +1 -1
  22. package/dist/cross-scope-privilege-plugin.js +1 -0
  23. package/dist/cross-scope-privilege-plugin.js.map +1 -1
  24. package/dist/dashboard/dashboard-plugin.js +2 -0
  25. package/dist/dashboard/dashboard-plugin.js.map +1 -1
  26. package/dist/data-plugin.js +1 -0
  27. package/dist/data-plugin.js.map +1 -1
  28. package/dist/email-notification-plugin.js +9 -13
  29. package/dist/email-notification-plugin.js.map +1 -1
  30. package/dist/flow/constants/flow-plugin-constants.d.ts +1 -1
  31. package/dist/flow/constants/flow-plugin-constants.js +1 -1
  32. package/dist/flow/constants/flow-plugin-constants.js.map +1 -1
  33. package/dist/flow/flow-logic/flow-logic-plugin-helpers.d.ts +82 -2
  34. package/dist/flow/flow-logic/flow-logic-plugin-helpers.js +48 -40
  35. package/dist/flow/flow-logic/flow-logic-plugin-helpers.js.map +1 -1
  36. package/dist/flow/flow-logic/flow-logic-plugin.js +1 -0
  37. package/dist/flow/flow-logic/flow-logic-plugin.js.map +1 -1
  38. package/dist/flow/plugins/approval-rules-plugin.js +1 -0
  39. package/dist/flow/plugins/approval-rules-plugin.js.map +1 -1
  40. package/dist/flow/plugins/flow-action-definition-plugin.js +4 -2
  41. package/dist/flow/plugins/flow-action-definition-plugin.js.map +1 -1
  42. package/dist/flow/plugins/flow-data-pill-plugin.js +1 -0
  43. package/dist/flow/plugins/flow-data-pill-plugin.js.map +1 -1
  44. package/dist/flow/plugins/flow-definition-plugin.js +8 -3
  45. package/dist/flow/plugins/flow-definition-plugin.js.map +1 -1
  46. package/dist/flow/plugins/flow-diagnostics-plugin.js +1 -0
  47. package/dist/flow/plugins/flow-diagnostics-plugin.js.map +1 -1
  48. package/dist/flow/plugins/flow-instance-plugin.js +68 -12
  49. package/dist/flow/plugins/flow-instance-plugin.js.map +1 -1
  50. package/dist/flow/plugins/flow-trigger-instance-plugin.js +1 -0
  51. package/dist/flow/plugins/flow-trigger-instance-plugin.js.map +1 -1
  52. package/dist/flow/plugins/inline-script-plugin.js +1 -0
  53. package/dist/flow/plugins/inline-script-plugin.js.map +1 -1
  54. package/dist/flow/plugins/step-definition-plugin.js +3 -2
  55. package/dist/flow/plugins/step-definition-plugin.js.map +1 -1
  56. package/dist/flow/plugins/step-instance-plugin.js +1 -0
  57. package/dist/flow/plugins/step-instance-plugin.js.map +1 -1
  58. package/dist/flow/plugins/trigger-plugin.js +2 -0
  59. package/dist/flow/plugins/trigger-plugin.js.map +1 -1
  60. package/dist/flow/plugins/wfa-datapill-plugin.js +1 -0
  61. package/dist/flow/plugins/wfa-datapill-plugin.js.map +1 -1
  62. package/dist/flow/post-install.d.ts +2 -0
  63. package/dist/flow/post-install.js +58 -0
  64. package/dist/flow/post-install.js.map +1 -0
  65. package/dist/flow/utils/complex-objects.js +4 -2
  66. package/dist/flow/utils/complex-objects.js.map +1 -1
  67. package/dist/flow/utils/flow-constants.d.ts +24 -0
  68. package/dist/flow/utils/flow-constants.js +29 -2
  69. package/dist/flow/utils/flow-constants.js.map +1 -1
  70. package/dist/flow/utils/flow-to-xml.d.ts +3 -2
  71. package/dist/flow/utils/flow-to-xml.js +3 -4
  72. package/dist/flow/utils/flow-to-xml.js.map +1 -1
  73. package/dist/flow/utils/label-cache-processor.d.ts +5 -0
  74. package/dist/flow/utils/label-cache-processor.js +14 -2
  75. package/dist/flow/utils/label-cache-processor.js.map +1 -1
  76. package/dist/flow/utils/service-catalog.js +5 -1
  77. package/dist/flow/utils/service-catalog.js.map +1 -1
  78. package/dist/form-plugin.d.ts +2 -0
  79. package/dist/form-plugin.js +1134 -0
  80. package/dist/form-plugin.js.map +1 -0
  81. package/dist/html-import-plugin.js +1 -0
  82. package/dist/html-import-plugin.js.map +1 -1
  83. package/dist/import-sets-plugin.js +2 -0
  84. package/dist/import-sets-plugin.js.map +1 -1
  85. package/dist/index.d.ts +9 -0
  86. package/dist/index.js +13 -1
  87. package/dist/index.js.map +1 -1
  88. package/dist/instance-scan-plugin.d.ts +2 -0
  89. package/dist/instance-scan-plugin.js +298 -0
  90. package/dist/instance-scan-plugin.js.map +1 -0
  91. package/dist/json-plugin.js +1 -0
  92. package/dist/json-plugin.js.map +1 -1
  93. package/dist/list-plugin.js +1 -0
  94. package/dist/list-plugin.js.map +1 -1
  95. package/dist/now-attach-plugin.js +1 -0
  96. package/dist/now-attach-plugin.js.map +1 -1
  97. package/dist/now-config-plugin.js +659 -51
  98. package/dist/now-config-plugin.js.map +1 -1
  99. package/dist/now-id-plugin.js +1 -0
  100. package/dist/now-id-plugin.js.map +1 -1
  101. package/dist/now-include-plugin.js +1 -0
  102. package/dist/now-include-plugin.js.map +1 -1
  103. package/dist/now-ref-plugin.js +1 -0
  104. package/dist/now-ref-plugin.js.map +1 -1
  105. package/dist/now-unresolved-plugin.js +1 -0
  106. package/dist/now-unresolved-plugin.js.map +1 -1
  107. package/dist/package-json-plugin.js +1 -0
  108. package/dist/package-json-plugin.js.map +1 -1
  109. package/dist/property-plugin.js +3 -1
  110. package/dist/property-plugin.js.map +1 -1
  111. package/dist/record-plugin.d.ts +30 -0
  112. package/dist/record-plugin.js +37 -1
  113. package/dist/record-plugin.js.map +1 -1
  114. package/dist/repack/lint/Rules.d.ts +11 -2
  115. package/dist/repack/lint/Rules.js +160 -16
  116. package/dist/repack/lint/Rules.js.map +1 -1
  117. package/dist/repack/lint/index.d.ts +10 -5
  118. package/dist/repack/lint/index.js +76 -50
  119. package/dist/repack/lint/index.js.map +1 -1
  120. package/dist/rest-api-plugin.js +14 -0
  121. package/dist/rest-api-plugin.js.map +1 -1
  122. package/dist/role-plugin.js +1 -0
  123. package/dist/role-plugin.js.map +1 -1
  124. package/dist/schedule-script/index.d.ts +1 -0
  125. package/dist/schedule-script/index.js +18 -0
  126. package/dist/schedule-script/index.js.map +1 -0
  127. package/dist/schedule-script/scheduled-script-plugin.d.ts +2 -0
  128. package/dist/schedule-script/scheduled-script-plugin.js +551 -0
  129. package/dist/schedule-script/scheduled-script-plugin.js.map +1 -0
  130. package/dist/schedule-script/timeZoneConverter.d.ts +61 -0
  131. package/dist/schedule-script/timeZoneConverter.js +170 -0
  132. package/dist/schedule-script/timeZoneConverter.js.map +1 -0
  133. package/dist/script-action-plugin.js +2 -0
  134. package/dist/script-action-plugin.js.map +1 -1
  135. package/dist/script-include-plugin.js +2 -0
  136. package/dist/script-include-plugin.js.map +1 -1
  137. package/dist/server-module-plugin/index.js +13 -2
  138. package/dist/server-module-plugin/index.js.map +1 -1
  139. package/dist/service-catalog/catalog-clientscript-plugin.js +2 -0
  140. package/dist/service-catalog/catalog-clientscript-plugin.js.map +1 -1
  141. package/dist/service-catalog/catalog-item-plugin.js +2 -0
  142. package/dist/service-catalog/catalog-item-plugin.js.map +1 -1
  143. package/dist/service-catalog/catalog-ui-policy-plugin.js +2 -0
  144. package/dist/service-catalog/catalog-ui-policy-plugin.js.map +1 -1
  145. package/dist/service-catalog/sc-record-producer-plugin.js +2 -0
  146. package/dist/service-catalog/sc-record-producer-plugin.js.map +1 -1
  147. package/dist/service-catalog/service-catalog-diagnostics.d.ts +6 -0
  148. package/dist/service-catalog/service-catalog-diagnostics.js +20 -0
  149. package/dist/service-catalog/service-catalog-diagnostics.js.map +1 -1
  150. package/dist/service-catalog/shape-to-record.js +7 -2
  151. package/dist/service-catalog/shape-to-record.js.map +1 -1
  152. package/dist/service-catalog/variable-set-plugin.js +2 -0
  153. package/dist/service-catalog/variable-set-plugin.js.map +1 -1
  154. package/dist/service-portal/angular-provider-plugin.js +2 -0
  155. package/dist/service-portal/angular-provider-plugin.js.map +1 -1
  156. package/dist/service-portal/dependency-plugin.js +5 -31
  157. package/dist/service-portal/dependency-plugin.js.map +1 -1
  158. package/dist/service-portal/menu-plugin.d.ts +2 -0
  159. package/dist/service-portal/menu-plugin.js +353 -0
  160. package/dist/service-portal/menu-plugin.js.map +1 -0
  161. package/dist/service-portal/page-plugin.d.ts +2 -0
  162. package/dist/service-portal/page-plugin.js +702 -0
  163. package/dist/service-portal/page-plugin.js.map +1 -0
  164. package/dist/service-portal/portal-plugin.d.ts +2 -0
  165. package/dist/service-portal/portal-plugin.js +296 -0
  166. package/dist/service-portal/portal-plugin.js.map +1 -0
  167. package/dist/service-portal/theme-plugin.d.ts +2 -0
  168. package/dist/service-portal/theme-plugin.js +112 -0
  169. package/dist/service-portal/theme-plugin.js.map +1 -0
  170. package/dist/service-portal/utils.d.ts +8 -0
  171. package/dist/service-portal/utils.js +50 -0
  172. package/dist/service-portal/utils.js.map +1 -0
  173. package/dist/service-portal/widget-plugin.js +45 -8
  174. package/dist/service-portal/widget-plugin.js.map +1 -1
  175. package/dist/sla-plugin.js +2 -0
  176. package/dist/sla-plugin.js.map +1 -1
  177. package/dist/static-content-plugin.js +1 -0
  178. package/dist/static-content-plugin.js.map +1 -1
  179. package/dist/table-plugin.js +1 -0
  180. package/dist/table-plugin.js.map +1 -1
  181. package/dist/ui-action-plugin.js +2 -0
  182. package/dist/ui-action-plugin.js.map +1 -1
  183. package/dist/ui-page-plugin.js +33 -8
  184. package/dist/ui-page-plugin.js.map +1 -1
  185. package/dist/ui-policy-plugin.js +1 -0
  186. package/dist/ui-policy-plugin.js.map +1 -1
  187. package/dist/user-preference-plugin.js +2 -0
  188. package/dist/user-preference-plugin.js.map +1 -1
  189. package/dist/utils.d.ts +20 -2
  190. package/dist/utils.js +34 -3
  191. package/dist/utils.js.map +1 -1
  192. package/dist/ux-list-menu-config-plugin.js +2 -0
  193. package/dist/ux-list-menu-config-plugin.js.map +1 -1
  194. package/dist/view-plugin.js +1 -0
  195. package/dist/view-plugin.js.map +1 -1
  196. package/dist/workspace-plugin.js +2 -0
  197. package/dist/workspace-plugin.js.map +1 -1
  198. package/package.json +10 -11
  199. package/src/_types/eslint-community-eslint-utils.d.ts +15 -0
  200. package/src/acl-plugin.ts +97 -8
  201. package/src/applicability-plugin.ts +2 -0
  202. package/src/application-menu-plugin.ts +2 -0
  203. package/src/arrow-function-plugin.ts +128 -13
  204. package/src/atf/test-plugin.ts +2 -0
  205. package/src/basic-syntax-plugin.ts +21 -0
  206. package/src/call-expression-plugin.ts +1 -0
  207. package/src/claims-plugin.ts +1 -0
  208. package/src/client-script-plugin.ts +2 -1
  209. package/src/column-plugin.ts +1 -0
  210. package/src/cross-scope-privilege-plugin.ts +2 -1
  211. package/src/dashboard/dashboard-plugin.ts +2 -0
  212. package/src/data-plugin.ts +1 -0
  213. package/src/email-notification-plugin.ts +3 -23
  214. package/src/flow/constants/flow-plugin-constants.ts +1 -1
  215. package/src/flow/flow-logic/flow-logic-plugin-helpers.ts +47 -45
  216. package/src/flow/flow-logic/flow-logic-plugin.ts +1 -0
  217. package/src/flow/plugins/approval-rules-plugin.ts +1 -0
  218. package/src/flow/plugins/flow-action-definition-plugin.ts +4 -2
  219. package/src/flow/plugins/flow-data-pill-plugin.ts +1 -0
  220. package/src/flow/plugins/flow-definition-plugin.ts +10 -4
  221. package/src/flow/plugins/flow-diagnostics-plugin.ts +1 -0
  222. package/src/flow/plugins/flow-instance-plugin.ts +103 -14
  223. package/src/flow/plugins/flow-trigger-instance-plugin.ts +1 -0
  224. package/src/flow/plugins/inline-script-plugin.ts +1 -0
  225. package/src/flow/plugins/step-definition-plugin.ts +3 -2
  226. package/src/flow/plugins/step-instance-plugin.ts +1 -0
  227. package/src/flow/plugins/trigger-plugin.ts +2 -0
  228. package/src/flow/plugins/wfa-datapill-plugin.ts +1 -0
  229. package/src/flow/post-install.ts +92 -0
  230. package/src/flow/utils/complex-objects.ts +10 -2
  231. package/src/flow/utils/flow-constants.ts +30 -1
  232. package/src/flow/utils/flow-to-xml.ts +4 -4
  233. package/src/flow/utils/label-cache-processor.ts +14 -2
  234. package/src/flow/utils/service-catalog.ts +5 -2
  235. package/src/form-plugin.ts +1411 -0
  236. package/src/html-import-plugin.ts +1 -0
  237. package/src/import-sets-plugin.ts +2 -0
  238. package/src/index.ts +9 -0
  239. package/src/instance-scan-plugin.ts +318 -0
  240. package/src/json-plugin.ts +1 -0
  241. package/src/list-plugin.ts +2 -1
  242. package/src/now-attach-plugin.ts +1 -0
  243. package/src/now-config-plugin.ts +833 -53
  244. package/src/now-id-plugin.ts +1 -0
  245. package/src/now-include-plugin.ts +1 -0
  246. package/src/now-ref-plugin.ts +1 -0
  247. package/src/now-unresolved-plugin.ts +1 -0
  248. package/src/package-json-plugin.ts +1 -0
  249. package/src/property-plugin.ts +3 -1
  250. package/src/record-plugin.ts +42 -2
  251. package/src/repack/lint/Rules.ts +171 -22
  252. package/src/repack/lint/index.ts +80 -56
  253. package/src/rest-api-plugin.ts +21 -1
  254. package/src/role-plugin.ts +2 -1
  255. package/src/schedule-script/index.ts +1 -0
  256. package/src/schedule-script/scheduled-script-plugin.ts +679 -0
  257. package/src/schedule-script/timeZoneConverter.ts +188 -0
  258. package/src/script-action-plugin.ts +2 -0
  259. package/src/script-include-plugin.ts +2 -0
  260. package/src/server-module-plugin/index.ts +14 -2
  261. package/src/service-catalog/catalog-clientscript-plugin.ts +2 -0
  262. package/src/service-catalog/catalog-item-plugin.ts +2 -0
  263. package/src/service-catalog/catalog-ui-policy-plugin.ts +2 -0
  264. package/src/service-catalog/sc-record-producer-plugin.ts +2 -0
  265. package/src/service-catalog/service-catalog-diagnostics.ts +30 -0
  266. package/src/service-catalog/shape-to-record.ts +8 -2
  267. package/src/service-catalog/variable-set-plugin.ts +2 -0
  268. package/src/service-portal/angular-provider-plugin.ts +2 -0
  269. package/src/service-portal/dependency-plugin.ts +6 -53
  270. package/src/service-portal/menu-plugin.ts +435 -0
  271. package/src/service-portal/page-plugin.ts +830 -0
  272. package/src/service-portal/portal-plugin.ts +319 -0
  273. package/src/service-portal/theme-plugin.ts +135 -0
  274. package/src/service-portal/utils.ts +69 -0
  275. package/src/service-portal/widget-plugin.ts +79 -9
  276. package/src/sla-plugin.ts +2 -0
  277. package/src/static-content-plugin.ts +1 -0
  278. package/src/table-plugin.ts +2 -1
  279. package/src/ui-action-plugin.ts +2 -0
  280. package/src/ui-page-plugin.ts +34 -8
  281. package/src/ui-policy-plugin.ts +2 -1
  282. package/src/user-preference-plugin.ts +2 -0
  283. package/src/utils.ts +42 -2
  284. package/src/ux-list-menu-config-plugin.ts +2 -0
  285. package/src/view-plugin.ts +1 -0
  286. package/src/workspace-plugin.ts +2 -0
  287. package/src/_types/eslint-plugin-es-x.d.ts +0 -17
@@ -0,0 +1,551 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScheduledScriptPlugin = void 0;
4
+ const sdk_build_core_1 = require("@servicenow/sdk-build-core");
5
+ const now_id_plugin_1 = require("../now-id-plugin");
6
+ const now_include_plugin_1 = require("../now-include-plugin");
7
+ const utils_1 = require("../utils");
8
+ const timeZoneConverter_1 = require("./timeZoneConverter");
9
+ const DEFAULT_DATE_TIME = '1970-01-01 00:00:00';
10
+ /**
11
+ * Calculate the default entered_run_time for 00:00:00 based on timezone
12
+ * @param timeZone - The IANA timezone identifier
13
+ * @returns Formatted datetime string representing 00:00:00 in the specified timezone
14
+ */
15
+ function getDefaultRunTime(timeZone) {
16
+ try {
17
+ // Floating timezone → return raw epoch
18
+ if (timeZone === 'floating') {
19
+ return DEFAULT_DATE_TIME;
20
+ }
21
+ // Valid timezone → treat reference as LOCAL in that timezone → convert to UTC
22
+ const utcDate = (0, sdk_build_core_1.timeFieldToXML)({ hours: 0, minutes: 0, seconds: 0 }, timeZone);
23
+ return (0, sdk_build_core_1.formatDateToPlatformFormat)(utcDate);
24
+ }
25
+ catch (error) {
26
+ return DEFAULT_DATE_TIME;
27
+ }
28
+ }
29
+ /**
30
+ * Map day of week numeric values to day names
31
+ */
32
+ const dayOfWeekMap = new Map([
33
+ ['1', 'monday'],
34
+ ['2', 'tuesday'],
35
+ ['3', 'wednesday'],
36
+ ['4', 'thursday'],
37
+ ['5', 'friday'],
38
+ ['6', 'saturday'],
39
+ ['7', 'sunday'],
40
+ ]);
41
+ const offsetTypeMap = new Map([
42
+ ['1', 'past'],
43
+ ['2', 'future'],
44
+ ]);
45
+ /**
46
+ * Reverse map: offset type names to numeric values (generated from offsetTypeMap)
47
+ */
48
+ const reverseOffsetTypeMap = new Map(Array.from(offsetTypeMap.entries()).map(([num, type]) => [type, num]));
49
+ /**
50
+ * Reverse map: day names to numeric values (generated from dayOfWeekMap)
51
+ */
52
+ const reverseDayOfWeekMap = new Map(Array.from(dayOfWeekMap.entries()).map(([num, day]) => [day, num]));
53
+ /**
54
+ * Negate a duration object (multiply all values by -1)
55
+ * @param duration - Duration object with days, hours, minutes, seconds
56
+ * @returns Negated duration object
57
+ */
58
+ function negateDuration(duration) {
59
+ return {
60
+ days: duration.days ? -duration.days : 0,
61
+ hours: duration.hours ? -duration.hours : 0,
62
+ minutes: duration.minutes ? -duration.minutes : 0,
63
+ seconds: duration.seconds ? -duration.seconds : 0,
64
+ };
65
+ }
66
+ /**
67
+ * Add duration to a Date object in place
68
+ * @param date - Date object to modify
69
+ * @param duration - Duration to add (days, hours, minutes, seconds)
70
+ */
71
+ function addDuration(date, duration) {
72
+ if (duration.days) {
73
+ date.setDate(date.getDate() + duration.days);
74
+ }
75
+ if (duration.hours) {
76
+ date.setHours(date.getHours() + duration.hours);
77
+ }
78
+ if (duration.minutes) {
79
+ date.setMinutes(date.getMinutes() + duration.minutes);
80
+ }
81
+ if (duration.seconds) {
82
+ date.setSeconds(date.getSeconds() + duration.seconds);
83
+ }
84
+ }
85
+ /**
86
+ * Add duration to a datetime string without timezone conversion
87
+ * @param dateTimeStr - Datetime string in format 'YYYY-MM-DD HH:MM:SS'
88
+ * @param duration - Duration to add (days, hours, minutes, seconds)
89
+ * @returns New datetime string with duration added
90
+ */
91
+ function addDurationToString(dateTimeStr, duration) {
92
+ const parts = dateTimeStr.split(' ');
93
+ if (parts.length !== 2 || !parts[0] || !parts[1]) {
94
+ return dateTimeStr;
95
+ }
96
+ const dateParts = parts[0].split('-').map(Number);
97
+ const timeParts = parts[1].split(':').map(Number);
98
+ if (dateParts.length !== 3 || timeParts.length !== 3) {
99
+ return dateTimeStr;
100
+ }
101
+ if (dateParts.some(isNaN) || timeParts.some(isNaN)) {
102
+ return dateTimeStr;
103
+ }
104
+ const date = new Date(dateParts[0] ?? 0, (dateParts[1] ?? 1) - 1, dateParts[2] ?? 1, timeParts[0] ?? 0, timeParts[1] ?? 0, timeParts[2] ?? 0);
105
+ addDuration(date, duration);
106
+ const newYear = date.getFullYear();
107
+ const newMonth = String(date.getMonth() + 1).padStart(2, '0');
108
+ const newDay = String(date.getDate()).padStart(2, '0');
109
+ const newHours = String(date.getHours()).padStart(2, '0');
110
+ const newMinutes = String(date.getMinutes()).padStart(2, '0');
111
+ const newSeconds = String(date.getSeconds()).padStart(2, '0');
112
+ return `${newYear}-${newMonth}-${newDay} ${newHours}:${newMinutes}:${newSeconds}`;
113
+ }
114
+ /**
115
+ * Calculate the recurring interval in days for different run types
116
+ * @param frequency - The type of recurring schedule
117
+ * @returns Number of days in the interval, or undefined if not a fixed-interval type
118
+ */
119
+ function calculateRecurringInterval(frequency) {
120
+ const recurrenceIntervals = {
121
+ daily: 1,
122
+ weekly: 7,
123
+ day_and_month_in_year: 365,
124
+ day_week_month_year: 365,
125
+ };
126
+ return recurrenceIntervals[frequency];
127
+ }
128
+ /**
129
+ * Calculate minimum end date for monthly recurring jobs
130
+ * @param executionStart - Start datetime string
131
+ * @param maxDrift - Optional max drift duration
132
+ * @returns Object with minEndStr and intervalDescription
133
+ */
134
+ function calculateMonthlyMinEndDate(executionStart, maxDrift) {
135
+ const parts = executionStart.split(' ');
136
+ if (parts.length !== 2 || !parts[0] || !parts[1]) {
137
+ return { minEndStr: undefined, intervalDescription: undefined };
138
+ }
139
+ const [datePart] = parts;
140
+ const dateParts = datePart.split('-').map(Number);
141
+ if (dateParts.length !== 3) {
142
+ return { minEndStr: undefined, intervalDescription: undefined };
143
+ }
144
+ const [year, month, day] = dateParts;
145
+ const nextDate = new Date(year, month, day);
146
+ const nextYear = nextDate.getFullYear();
147
+ const nextMonth = String(nextDate.getMonth() + 1).padStart(2, '0');
148
+ const nextDay = String(nextDate.getDate()).padStart(2, '0');
149
+ let minEndStr = `${nextYear}-${nextMonth}-${nextDay} ${parts[1]}`;
150
+ if (maxDrift) {
151
+ minEndStr = addDurationToString(minEndStr, negateDuration(maxDrift));
152
+ }
153
+ const intervalDescription = `1 month${maxDrift ? ' - maxDrift' : ''}`;
154
+ return { minEndStr, intervalDescription };
155
+ }
156
+ /**
157
+ * Calculate minimum end date for periodically recurring jobs
158
+ * @param executionStart - Start datetime string
159
+ * @param executionInterval - Duration for the period
160
+ * @param maxDrift - Optional max drift duration
161
+ * @returns Object with minEndStr and intervalDescription
162
+ */
163
+ function calculatePeriodicallyMinEndDate(executionStart, executionInterval, maxDrift) {
164
+ let minEndStr = addDurationToString(executionStart, executionInterval);
165
+ if (maxDrift) {
166
+ minEndStr = addDurationToString(minEndStr, negateDuration(maxDrift));
167
+ }
168
+ const intervalDescription = `executionInterval${maxDrift ? ' - maxDrift' : ''}`;
169
+ return { minEndStr, intervalDescription };
170
+ }
171
+ /**
172
+ * Calculate minimum end date for fixed-interval recurring jobs (daily, weekly, yearly)
173
+ * @param executionStart - Start datetime string
174
+ * @param intervalDays - Number of days in the interval
175
+ * @param maxDrift - Optional max drift duration
176
+ * @returns Object with minEndStr and intervalDescription
177
+ */
178
+ function calculateFixedIntervalMinEndDate(executionStart, intervalDays, maxDrift) {
179
+ let minEndStr = addDurationToString(executionStart, { days: intervalDays });
180
+ if (maxDrift) {
181
+ minEndStr = addDurationToString(minEndStr, negateDuration(maxDrift));
182
+ }
183
+ const intervalDescription = `${intervalDays} day${intervalDays > 1 ? 's' : ''}${maxDrift ? ' - maxDrift' : ''}`;
184
+ return { minEndStr, intervalDescription };
185
+ }
186
+ /**
187
+ * Validate that executionEnd allows at least one execution for recurring jobs
188
+ * Based on ServiceNow's "Ensure Valid Schedule" business rules
189
+ * @param executionStart - Start datetime string
190
+ * @param executionEnd - End datetime string
191
+ * @param frequency - Type of recurring schedule
192
+ * @param executionIntervalShape - Shape containing executionInterval duration (for periodically jobs)
193
+ * @param maxDriftShape - Shape containing maxDrift duration
194
+ * @returns Object with minEndStr and intervalDescription if validation is needed, undefined otherwise
195
+ */
196
+ function validateRecurringJobSchedule(executionStart, executionEnd, frequency, executionIntervalShape, maxDriftShape) {
197
+ if (frequency === 'once' || frequency === 'on_demand') {
198
+ return;
199
+ }
200
+ const maxDrift = maxDriftShape.is(sdk_build_core_1.DurationShape) ? maxDriftShape.as(sdk_build_core_1.DurationShape).getDuration() : undefined;
201
+ let minEndStr;
202
+ let intervalDescription;
203
+ if (frequency === 'periodically' && executionIntervalShape.is(sdk_build_core_1.DurationShape)) {
204
+ const duration = executionIntervalShape.as(sdk_build_core_1.DurationShape).getDuration();
205
+ const result = calculatePeriodicallyMinEndDate(executionStart, duration, maxDrift);
206
+ minEndStr = result.minEndStr;
207
+ intervalDescription = result.intervalDescription;
208
+ }
209
+ else if (frequency === 'monthly' || frequency === 'week_in_month') {
210
+ const result = calculateMonthlyMinEndDate(executionStart, maxDrift);
211
+ minEndStr = result.minEndStr;
212
+ intervalDescription = result.intervalDescription;
213
+ }
214
+ else {
215
+ const intervalDays = calculateRecurringInterval(frequency);
216
+ if (intervalDays) {
217
+ const result = calculateFixedIntervalMinEndDate(executionStart, intervalDays, maxDrift);
218
+ minEndStr = result.minEndStr;
219
+ intervalDescription = result.intervalDescription;
220
+ }
221
+ }
222
+ if (minEndStr && executionEnd < minEndStr) {
223
+ return { minEndStr, intervalDescription };
224
+ }
225
+ return undefined;
226
+ }
227
+ exports.ScheduledScriptPlugin = sdk_build_core_1.Plugin.create({
228
+ name: 'ScheduledScriptPlugin',
229
+ docs: [(0, utils_1.createSdkDocEntry)('ScheduledScript', ['sysauto_script'])],
230
+ records: {
231
+ sysauto_script: {
232
+ async toShape(record, { transform }) {
233
+ const scriptValue = record.get('script').ifString()?.ifNotEmpty();
234
+ const script = scriptValue
235
+ ? await now_include_plugin_1.NowIncludeShape.fromRecord(record, record.get('script'), transform)
236
+ : undefined;
237
+ const timeZone = record.get('time_zone').ifString()?.ifNotEmpty()?.getValue();
238
+ return {
239
+ success: true,
240
+ value: new sdk_build_core_1.CallExpressionShape({
241
+ source: record,
242
+ callee: 'ScheduledScript',
243
+ args: [
244
+ record.transform(({ $ }) => ({
245
+ $id: $.val(now_id_plugin_1.NowIdShape.from(record)),
246
+ name: $,
247
+ active: $.from('active').toBoolean().def(true),
248
+ conditional: $.toBoolean().def(false),
249
+ condition: $.def(''),
250
+ // Offset configuration
251
+ offset: $.map((v) => {
252
+ const stringShape = v.ifString()?.ifNotEmpty();
253
+ if (!stringShape) {
254
+ return undefined;
255
+ }
256
+ return sdk_build_core_1.DurationShape.from(record, stringShape);
257
+ }),
258
+ offsetType: $.from('offset_type').map((v) => {
259
+ const value = v.ifString()?.getValue();
260
+ // Map: 1='past', 2='future', 0=undefined (no offset)
261
+ if (!value || value === '0') {
262
+ return undefined;
263
+ }
264
+ return offsetTypeMap.get(value);
265
+ }),
266
+ // Run as configuration
267
+ runAs: $.from('run_as').def(''),
268
+ userTimeZone: $.from('run_as_tz').def(''),
269
+ // Schedule type and timing
270
+ frequency: $.from('run_type'),
271
+ dayOfWeek: $.from('run_dayofweek').map((v) => {
272
+ const val = v.ifString()?.getValue();
273
+ return val ? dayOfWeekMap.get(val) : undefined;
274
+ }),
275
+ daysOfWeek: $.from('run_daysofweek').map((v) => {
276
+ const val = v.ifString()?.getValue();
277
+ if (!val) {
278
+ return undefined;
279
+ }
280
+ // Convert numeric string like '1234' to array of day names
281
+ const days = val
282
+ .split('')
283
+ .map((num) => dayOfWeekMap.get(num))
284
+ .filter(Boolean);
285
+ return days.length > 0 ? days : undefined;
286
+ }),
287
+ dayOfMonth: $.from('run_dayofmonth').map((v) => {
288
+ const val = v.ifString()?.ifNotEmpty();
289
+ return val ? val.toNumber() : undefined;
290
+ }),
291
+ weekInMonth: $.from('run_weekinmonth').map((v) => {
292
+ const val = v.ifString()?.ifNotEmpty();
293
+ return val ? val.toNumber() : undefined;
294
+ }),
295
+ month: $.from('run_month').map((v) => {
296
+ const val = v.ifString()?.ifNotEmpty();
297
+ return val ? val.toNumber() : undefined;
298
+ }),
299
+ // Time and duration configuration
300
+ executionTime: $.from('run_time').map((v) => {
301
+ const stringShape = v.ifString()?.ifNotEmpty();
302
+ if (!stringShape) {
303
+ return undefined;
304
+ }
305
+ // Get timezone from time_zone field
306
+ // If timezone is 'floating', treat it as UTC for TimeShape conversion
307
+ const tz = timeZone === 'floating' ? 'UTC' : timeZone;
308
+ // Convert to TimeShape with timezone
309
+ const timeShape = sdk_build_core_1.TimeShape.from(record, stringShape, tz);
310
+ const timeData = timeShape.getTimeData();
311
+ // Return undefined if Time object would be empty (no hours, minutes, or seconds)
312
+ if (!timeData.hours && !timeData.minutes && !timeData.seconds) {
313
+ return undefined;
314
+ }
315
+ return timeShape;
316
+ }),
317
+ executionInterval: $.from('run_period').map((v) => {
318
+ const stringShape = v.ifString()?.ifNotEmpty();
319
+ if (!stringShape) {
320
+ return undefined;
321
+ }
322
+ return sdk_build_core_1.DurationShape.from(record, stringShape);
323
+ }),
324
+ executionStart: $.from('run_start').map((v) => {
325
+ const stringShape = v.ifString()?.ifNotEmpty();
326
+ if (stringShape) {
327
+ return (0, timeZoneConverter_1.convertXMLToDateTime)(stringShape.getValue(), timeZone);
328
+ }
329
+ return undefined;
330
+ }),
331
+ executionEnd: $.from('run_end').map((v) => {
332
+ const stringShape = v.ifString()?.ifNotEmpty();
333
+ if (stringShape) {
334
+ return (0, timeZoneConverter_1.convertXMLToDateTime)(stringShape.getValue(), timeZone);
335
+ }
336
+ return undefined;
337
+ }),
338
+ maxDrift: $.from('max_drift').map((v) => {
339
+ const stringShape = v.ifString()?.ifNotEmpty();
340
+ if (!stringShape) {
341
+ return undefined;
342
+ }
343
+ return sdk_build_core_1.DurationShape.from(record, stringShape);
344
+ }),
345
+ // Additional scheduling options
346
+ repeatEvery: $.from('repeat_every').map((v) => v.ifString()?.isEmpty() || v.isUndefined() ? undefined : v.toNumber().getValue()),
347
+ upgradeSafe: $.from('upgrade_safe').toBoolean().def(false),
348
+ timeZone: $.from('time_zone').map((v) => {
349
+ const val = v.ifString()?.getValue();
350
+ return val || undefined;
351
+ }),
352
+ businessCalendar: $.from('business_calendar').def(''),
353
+ advanced: $.toBoolean().def(false),
354
+ // Protection policy
355
+ protectionPolicy: $.from('sys_policy').map((v) => {
356
+ const val = v.ifString()?.ifNotEmpty()?.getValue();
357
+ // Only return valid values: 'read' or 'protected'
358
+ return val === 'read' || val === 'protected' ? val : undefined;
359
+ }),
360
+ // Script
361
+ script: $.val(script),
362
+ })),
363
+ ],
364
+ }),
365
+ };
366
+ },
367
+ },
368
+ },
369
+ shapes: [
370
+ {
371
+ shape: sdk_build_core_1.CallExpressionShape,
372
+ fileTypes: ['fluent'],
373
+ async toRecord(callExpression, { factory, diagnostics }) {
374
+ if (callExpression.getCallee() !== 'ScheduledScript') {
375
+ return { success: false };
376
+ }
377
+ const args = callExpression.getArgument(0).asObject();
378
+ // Validate executionInterval is defined when frequency is 'periodically'
379
+ const frequency = args.get('frequency').ifString()?.getValue();
380
+ if (frequency === 'periodically' && args.get('executionInterval').isUndefined()) {
381
+ diagnostics.error(args.get('frequency'), `executionInterval must be defined when frequency is 'periodically'`);
382
+ }
383
+ // Validate daysOfWeek is defined when frequency is 'weekly'
384
+ if (frequency === 'weekly' && args.get('daysOfWeek').isUndefined()) {
385
+ diagnostics.error(args.get('frequency'), `daysOfWeek must be defined when frequency is 'weekly'`);
386
+ }
387
+ // Validate businessCalendar is not empty when frequency is business calendar related
388
+ const businessCalendarArg = args.get('businessCalendar');
389
+ const businessCalendar = (0, utils_1.toReference)(businessCalendarArg);
390
+ if ((frequency === 'business_calendar_start' || frequency === 'business_calendar_end') &&
391
+ !businessCalendar) {
392
+ diagnostics.error(businessCalendarArg, `businessCalendar cannot be empty when frequency is '${frequency}'. Provide a valid business calendar reference.`);
393
+ }
394
+ // Validate executionStart datetime format
395
+ const startDate = args.get('executionStart').ifString()?.getValue();
396
+ if (startDate && !/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(startDate)) {
397
+ diagnostics.error(args.get('executionStart'), `Invalid datetime format for executionStart: '${startDate}'. Expected format: 'YYYY-MM-DD HH:MM:SS' (e.g., '2024-01-01 00:00:00')`);
398
+ }
399
+ // Validate executionEnd datetime format
400
+ const endDate = args.get('executionEnd').ifString()?.getValue();
401
+ if (endDate) {
402
+ if (!/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(endDate)) {
403
+ diagnostics.error(args.get('executionEnd'), `Invalid datetime format for executionEnd: '${endDate}'. Expected format: 'YYYY-MM-DD HH:MM:SS' (e.g., '2024-12-31 23:59:59')`);
404
+ }
405
+ // Validate executionStart and executionEnd relationship
406
+ else if (startDate) {
407
+ const start = new Date(startDate);
408
+ const end = new Date(endDate);
409
+ if (end <= start) {
410
+ diagnostics.error(args.get('executionEnd'), `executionEnd ('${endDate}') must be after executionStart ('${startDate}')`);
411
+ }
412
+ // Validate recurring job schedule allows at least one execution
413
+ else {
414
+ const validationResult = validateRecurringJobSchedule(startDate, endDate, frequency ?? 'daily', args.get('executionInterval'), args.get('maxDrift'));
415
+ if (validationResult) {
416
+ diagnostics.error(args.get('executionEnd'), `executionEnd ('${endDate}') may not allow any executions for recurring job type '${frequency}'. ` +
417
+ `Minimum executionEnd should be at least '${validationResult.minEndStr}' (executionStart + ${validationResult.intervalDescription})`);
418
+ }
419
+ }
420
+ }
421
+ }
422
+ // Check timezone before transformation
423
+ const timeZone = args.get('timeZone').ifString()?.getValue();
424
+ // Validate executionTime has timezone if ScheduledScript has timeZone
425
+ const executionTimeArg = args.get('executionTime');
426
+ if (timeZone && timeZone !== 'floating' && executionTimeArg.is(sdk_build_core_1.TimeShape)) {
427
+ const timeShape = executionTimeArg.as(sdk_build_core_1.TimeShape);
428
+ const timeShapeTimeZone = timeShape.getTimeZone();
429
+ if (!timeShapeTimeZone) {
430
+ diagnostics.error(executionTimeArg, `executionTime must include timezone when ScheduledScript timeZone is '${timeZone}'. ` +
431
+ `Use Time({ hours: ..., minutes: ..., }, '${timeZone}' }) instead of Time({ hours: ..., minutes: ... }).`);
432
+ }
433
+ else if (timeShapeTimeZone !== timeZone) {
434
+ diagnostics.error(executionTimeArg, `executionTime timezone '${timeShapeTimeZone}' does not match ScheduledScript timeZone '${timeZone}'. ` +
435
+ `They should be the same.`);
436
+ }
437
+ }
438
+ // Calculate default entered_run_time based on timezone
439
+ const defaultRunTime = getDefaultRunTime(timeZone ?? '');
440
+ const record = await factory.createRecord({
441
+ source: callExpression,
442
+ table: 'sysauto_script',
443
+ explicitId: args.get('$id'),
444
+ properties: args.transform(({ $ }) => ({
445
+ name: $,
446
+ active: $.from('active').def(true),
447
+ conditional: $.def(false),
448
+ condition: $.toCdata(),
449
+ // Offset configuration
450
+ offset: $.map((v) => v.toString()),
451
+ offset_type: $.from('offsetType').map((v) => {
452
+ const val = v.ifString()?.getValue();
453
+ return val ? reverseOffsetTypeMap.get(val) : '0';
454
+ }),
455
+ // Run as configuration
456
+ run_as: $.from('runAs').map(utils_1.toReference),
457
+ run_as_tz: $.from('userTimeZone'),
458
+ // Schedule type and timing
459
+ run_type: $.from('frequency').def('daily'),
460
+ run_dayofweek: $.from('dayOfWeek').map((v) => {
461
+ const val = v.ifString()?.getValue();
462
+ return val ? reverseDayOfWeekMap.get(val) : '1';
463
+ }),
464
+ run_daysofweek: $.from('daysOfWeek').map((v) => {
465
+ // Convert array of day names to numeric string like '1234'
466
+ if (v.isArray()) {
467
+ const nums = v
468
+ .asArray()
469
+ .map((item) => {
470
+ const dayName = item.ifString()?.getValue();
471
+ return dayName ? reverseDayOfWeekMap.get(dayName) : null;
472
+ })
473
+ .filter(Boolean);
474
+ return nums.length > 0 ? nums.join('') : undefined;
475
+ }
476
+ return undefined;
477
+ }),
478
+ run_dayofmonth: $.from('dayOfMonth').def('1'),
479
+ run_weekinmonth: $.from('weekInMonth').def('1'),
480
+ run_month: $.from('month').def('1'),
481
+ // Time and duration configuration
482
+ run_time: $.from('executionTime').map((v) => {
483
+ if (v.isUndefined()) {
484
+ return defaultRunTime;
485
+ }
486
+ // If timezone is floating, return the actual time without UTC conversion
487
+ if (timeZone === 'floating' && v.is(sdk_build_core_1.TimeShape)) {
488
+ const timeData = v.as(sdk_build_core_1.TimeShape).getTimeData();
489
+ return (0, timeZoneConverter_1.formatTimeDataToDateTime)(timeData);
490
+ }
491
+ return v.toString();
492
+ }),
493
+ entered_time: $.from('executionTime')
494
+ .map((v) => {
495
+ if (v.is(sdk_build_core_1.TimeShape)) {
496
+ const timeData = v.as(sdk_build_core_1.TimeShape).getTimeData();
497
+ return (0, timeZoneConverter_1.formatTimeDataToDateTime)(timeData);
498
+ }
499
+ return undefined;
500
+ })
501
+ .def('1970-01-01 00:00:00'),
502
+ run_period: $.from('executionInterval').map((v) => v.toString()),
503
+ run_start: $.from('executionStart')
504
+ .map((v) => {
505
+ const dateTimeStr = v.ifString()?.getValue();
506
+ if (dateTimeStr) {
507
+ return (0, timeZoneConverter_1.dateTimeFieldToXML)(dateTimeStr, timeZone);
508
+ }
509
+ return undefined;
510
+ })
511
+ .def((0, timeZoneConverter_1.formatToUTC)()),
512
+ run_end: $.from('executionEnd').map((v) => {
513
+ const dateTimeStr = v.ifString()?.getValue();
514
+ if (!dateTimeStr) {
515
+ return undefined;
516
+ }
517
+ return (0, timeZoneConverter_1.dateTimeFieldToXML)(dateTimeStr, timeZone);
518
+ }),
519
+ entered_run_start: $.from('executionStart').map((v) => {
520
+ const dateTimeStr = v.ifString()?.getValue();
521
+ if (dateTimeStr && timeZone) {
522
+ return dateTimeStr;
523
+ }
524
+ return undefined;
525
+ }),
526
+ entered_run_end: $.from('executionEnd').map((v) => {
527
+ const dateTimeStr = v.ifString()?.getValue();
528
+ if (dateTimeStr && timeZone) {
529
+ return dateTimeStr;
530
+ }
531
+ return undefined;
532
+ }),
533
+ max_drift: $.from('maxDrift').map((v) => v.toString()),
534
+ // Additional scheduling options
535
+ repeat_every: $.from('repeatEvery'),
536
+ upgrade_safe: $.from('upgradeSafe').def(false),
537
+ time_zone: $.from('timeZone'),
538
+ business_calendar: $.val(businessCalendar),
539
+ advanced: $.def(false),
540
+ // Protection policy
541
+ sys_policy: $.from('protectionPolicy'),
542
+ // Script
543
+ script: $.toCdata(),
544
+ })),
545
+ });
546
+ return { success: true, value: record };
547
+ },
548
+ },
549
+ ],
550
+ });
551
+ //# sourceMappingURL=scheduled-script-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduled-script-plugin.js","sourceRoot":"","sources":["../../src/schedule-script/scheduled-script-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Formats a Date object to ServiceNow UTC datetime format (YYYY-MM-DD HH:MM:SS)
3
+ * @param date - The Date object to format (defaults to current time)
4
+ * @returns Formatted UTC datetime string
5
+ *
6
+ * @example
7
+ * const formatted = formatToUTC(new Date());
8
+ * // Returns: '1970-01-01 09:45:00'
9
+ *
10
+ * @example
11
+ * const formatted = formatToUTC();
12
+ * // Returns current time in UTC: '2026-02-27 07:43:00'
13
+ */
14
+ export declare function formatToUTC(date?: Date): string;
15
+ /**
16
+ * Converts a datetime string from a specified timezone to UTC.
17
+ * Similar to timeFieldToXML but handles full date and time, not just time of day.
18
+ *
19
+ * @param dateTimeStr - DateTime string in format 'YYYY-MM-DD HH:MM:SS'
20
+ * @param timeZone - Optional IANA timezone string (e.g., 'America/New_York', 'Asia/Kolkata'). Defaults to system timezone.
21
+ * @returns Formatted UTC datetime string in 'YYYY-MM-DD HH:MM:SS' format
22
+ *
23
+ * @example
24
+ * // Convert '2026-03-02 14:30:00' from IST to UTC
25
+ * const utcDate = dateTimeFieldToXML('2026-03-02 14:30:00', 'Asia/Kolkata')
26
+ * // Returns '2026-03-02 09:00:00'
27
+ */
28
+ export declare function dateTimeFieldToXML(dateTimeStr: string, timeZone?: string): string;
29
+ /**
30
+ * Converts an XML datetime string (in UTC) to a datetime string in a specified timezone
31
+ * @param utcDateTimeStr - UTC datetime string in format 'YYYY-MM-DD HH:MM:SS'
32
+ * @param timeZone - Optional IANA timezone string (e.g., 'America/New_York', 'Asia/Kolkata'). If not provided, returns the UTC string as-is.
33
+ * @returns Datetime string in the specified timezone in 'YYYY-MM-DD HH:MM:SS' format
34
+ *
35
+ * @example
36
+ * // Convert '2026-03-02 09:00:00' UTC to IST
37
+ * const localDateTime = convertXMLToDateTime('2026-03-02 09:00:00', 'Asia/Kolkata')
38
+ * // Returns '2026-03-02 14:30:00'
39
+ *
40
+ * @example
41
+ * // Without timezone, returns the UTC string as-is
42
+ * const utcDateTime = convertXMLToDateTime('2026-03-02 09:00:00')
43
+ * // Returns '2026-03-02 09:00:00'
44
+ */
45
+ export declare function convertXMLToDateTime(utcDateTimeStr: string, timeZone?: string): string;
46
+ /**
47
+ * Formats time data (hours, minutes, seconds) as a datetime string without timezone conversion.
48
+ * Used for storing the original user-entered time value in the 'entered_time' field.
49
+ *
50
+ * @param timeData - Object containing hours, minutes, and seconds
51
+ * @returns Formatted datetime string in 'YYYY-MM-DD HH:MM:SS' format with epoch date (1970-01-01)
52
+ *
53
+ * @example
54
+ * formatTimeDataToDateTime({ hours: 14, minutes: 30, seconds: 0 })
55
+ * // Returns '1970-01-01 14:30:00'
56
+ */
57
+ export declare function formatTimeDataToDateTime(timeData: {
58
+ hours?: number;
59
+ minutes?: number;
60
+ seconds?: number;
61
+ }): string;