amaran-light-cli 1.4.0 → 1.6.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 (245) hide show
  1. package/README.md +48 -18
  2. package/dist/__tests__/autoCct.test.js +2 -2
  3. package/dist/__tests__/autoCct.test.js.map +1 -1
  4. package/dist/__tests__/autostart.test.js +1 -1
  5. package/dist/__tests__/autostart.test.js.map +1 -1
  6. package/dist/__tests__/cctUtil.test.js +19 -2
  7. package/dist/__tests__/cctUtil.test.js.map +1 -1
  8. package/dist/__tests__/intensityApi.test.js +4 -1
  9. package/dist/__tests__/intensityApi.test.js.map +1 -1
  10. package/dist/__tests__/lightControl.test.js +260 -1
  11. package/dist/__tests__/lightControl.test.js.map +1 -1
  12. package/dist/__tests__/simulateSchedule.test.js +2 -2
  13. package/dist/__tests__/simulateSchedule.test.js.map +1 -1
  14. package/dist/cli.d.ts +2 -2
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +4 -4
  17. package/dist/cli.js.map +1 -1
  18. package/dist/commands/__tests__/integration.test.js +1 -1
  19. package/dist/commands/__tests__/integration.test.js.map +1 -1
  20. package/dist/commands/__tests__/newCommands.test.d.ts +2 -0
  21. package/dist/commands/__tests__/newCommands.test.d.ts.map +1 -0
  22. package/dist/commands/__tests__/newCommands.test.js +195 -0
  23. package/dist/commands/__tests__/newCommands.test.js.map +1 -0
  24. package/dist/commands/cmdUtils.d.ts +23 -0
  25. package/dist/commands/cmdUtils.d.ts.map +1 -0
  26. package/dist/commands/cmdUtils.js +43 -0
  27. package/dist/commands/cmdUtils.js.map +1 -0
  28. package/dist/commands/daylightSimulation/autoCct.d.ts +5 -0
  29. package/dist/commands/daylightSimulation/autoCct.d.ts.map +1 -0
  30. package/dist/commands/{autoCct.js → daylightSimulation/autoCct.js} +12 -13
  31. package/dist/commands/daylightSimulation/autoCct.js.map +1 -0
  32. package/dist/commands/{graphSchedule.d.ts → daylightSimulation/graphSchedule.d.ts} +1 -1
  33. package/dist/commands/daylightSimulation/graphSchedule.d.ts.map +1 -0
  34. package/dist/commands/daylightSimulation/graphSchedule.js +65 -0
  35. package/dist/commands/daylightSimulation/graphSchedule.js.map +1 -0
  36. package/dist/commands/daylightSimulation/printSchedule.d.ts +5 -0
  37. package/dist/commands/daylightSimulation/printSchedule.d.ts.map +1 -0
  38. package/dist/commands/daylightSimulation/printSchedule.js +65 -0
  39. package/dist/commands/daylightSimulation/printSchedule.js.map +1 -0
  40. package/dist/commands/{service.d.ts → daylightSimulation/service.d.ts} +1 -1
  41. package/dist/commands/daylightSimulation/service.d.ts.map +1 -0
  42. package/dist/commands/{service.js → daylightSimulation/service.js} +47 -35
  43. package/dist/commands/daylightSimulation/service.js.map +1 -0
  44. package/dist/commands/{simulateSchedule.d.ts → daylightSimulation/simulateSchedule.d.ts} +1 -1
  45. package/dist/commands/daylightSimulation/simulateSchedule.d.ts.map +1 -0
  46. package/dist/commands/daylightSimulation/simulateSchedule.js +123 -0
  47. package/dist/commands/daylightSimulation/simulateSchedule.js.map +1 -0
  48. package/dist/commands/{cct.d.ts → deviceControl/cct.d.ts} +1 -1
  49. package/dist/commands/deviceControl/cct.d.ts.map +1 -0
  50. package/dist/commands/{cct.js → deviceControl/cct.js} +31 -36
  51. package/dist/commands/deviceControl/cct.js.map +1 -0
  52. package/dist/commands/{color.d.ts → deviceControl/color.d.ts} +1 -1
  53. package/dist/commands/deviceControl/color.d.ts.map +1 -0
  54. package/dist/commands/deviceControl/color.js +52 -0
  55. package/dist/commands/deviceControl/color.js.map +1 -0
  56. package/dist/commands/{config.d.ts → deviceControl/config.d.ts} +1 -1
  57. package/dist/commands/deviceControl/config.d.ts.map +1 -0
  58. package/dist/commands/{config.js → deviceControl/config.js} +11 -7
  59. package/dist/commands/deviceControl/config.js.map +1 -0
  60. package/dist/commands/{discover.d.ts → deviceControl/discover.d.ts} +1 -1
  61. package/dist/commands/deviceControl/discover.d.ts.map +1 -0
  62. package/dist/commands/{discover.js → deviceControl/discover.js} +8 -4
  63. package/dist/commands/deviceControl/discover.js.map +1 -0
  64. package/dist/commands/deviceControl/effect.d.ts +5 -0
  65. package/dist/commands/deviceControl/effect.d.ts.map +1 -0
  66. package/dist/commands/deviceControl/effect.js +172 -0
  67. package/dist/commands/deviceControl/effect.js.map +1 -0
  68. package/dist/commands/deviceControl/fan.d.ts +5 -0
  69. package/dist/commands/deviceControl/fan.d.ts.map +1 -0
  70. package/dist/commands/deviceControl/fan.js +105 -0
  71. package/dist/commands/deviceControl/fan.js.map +1 -0
  72. package/dist/commands/deviceControl/firmware.d.ts +5 -0
  73. package/dist/commands/deviceControl/firmware.d.ts.map +1 -0
  74. package/dist/commands/deviceControl/firmware.js +68 -0
  75. package/dist/commands/deviceControl/firmware.js.map +1 -0
  76. package/dist/commands/deviceControl/group.d.ts +5 -0
  77. package/dist/commands/deviceControl/group.d.ts.map +1 -0
  78. package/dist/commands/deviceControl/group.js +101 -0
  79. package/dist/commands/deviceControl/group.js.map +1 -0
  80. package/dist/commands/{hsi.d.ts → deviceControl/hsi.d.ts} +1 -1
  81. package/dist/commands/deviceControl/hsi.d.ts.map +1 -0
  82. package/dist/commands/deviceControl/hsi.js +50 -0
  83. package/dist/commands/deviceControl/hsi.js.map +1 -0
  84. package/dist/commands/deviceControl/info.d.ts +5 -0
  85. package/dist/commands/deviceControl/info.d.ts.map +1 -0
  86. package/dist/commands/deviceControl/info.js +57 -0
  87. package/dist/commands/deviceControl/info.js.map +1 -0
  88. package/dist/commands/{intensity.d.ts → deviceControl/intensity.d.ts} +1 -1
  89. package/dist/commands/deviceControl/intensity.d.ts.map +1 -0
  90. package/dist/commands/deviceControl/intensity.js +41 -0
  91. package/dist/commands/deviceControl/intensity.js.map +1 -0
  92. package/dist/commands/{list.d.ts → deviceControl/list.d.ts} +1 -1
  93. package/dist/commands/deviceControl/list.d.ts.map +1 -0
  94. package/dist/commands/{list.js → deviceControl/list.js} +7 -3
  95. package/dist/commands/deviceControl/list.js.map +1 -0
  96. package/dist/commands/{power.d.ts → deviceControl/power.d.ts} +1 -1
  97. package/dist/commands/deviceControl/power.d.ts.map +1 -0
  98. package/dist/commands/deviceControl/power.js +78 -0
  99. package/dist/commands/deviceControl/power.js.map +1 -0
  100. package/dist/commands/deviceControl/preset.d.ts +5 -0
  101. package/dist/commands/deviceControl/preset.d.ts.map +1 -0
  102. package/dist/commands/deviceControl/preset.js +55 -0
  103. package/dist/commands/deviceControl/preset.js.map +1 -0
  104. package/dist/commands/deviceControl/quickshot.d.ts +5 -0
  105. package/dist/commands/deviceControl/quickshot.d.ts.map +1 -0
  106. package/dist/commands/deviceControl/quickshot.js +51 -0
  107. package/dist/commands/deviceControl/quickshot.js.map +1 -0
  108. package/dist/commands/deviceControl/scene.d.ts +5 -0
  109. package/dist/commands/deviceControl/scene.d.ts.map +1 -0
  110. package/dist/commands/deviceControl/scene.js +101 -0
  111. package/dist/commands/deviceControl/scene.js.map +1 -0
  112. package/dist/commands/{status.d.ts → deviceControl/status.d.ts} +1 -1
  113. package/dist/commands/deviceControl/status.d.ts.map +1 -0
  114. package/dist/commands/deviceControl/status.js +48 -0
  115. package/dist/commands/deviceControl/status.js.map +1 -0
  116. package/dist/commands.d.ts +1 -1
  117. package/dist/commands.d.ts.map +1 -1
  118. package/dist/commands.js +34 -43
  119. package/dist/commands.js.map +1 -1
  120. package/dist/daylightSimulation/cctUtil.d.ts +5 -0
  121. package/dist/daylightSimulation/cctUtil.d.ts.map +1 -0
  122. package/dist/daylightSimulation/cctUtil.js +191 -0
  123. package/dist/daylightSimulation/cctUtil.js.map +1 -0
  124. package/dist/{constants.d.ts → daylightSimulation/constants.d.ts} +1 -18
  125. package/dist/daylightSimulation/constants.d.ts.map +1 -0
  126. package/dist/{constants.js → daylightSimulation/constants.js} +1 -13
  127. package/dist/daylightSimulation/constants.js.map +1 -0
  128. package/dist/daylightSimulation/curves/approximations.d.ts +19 -0
  129. package/dist/daylightSimulation/curves/approximations.d.ts.map +1 -0
  130. package/dist/daylightSimulation/curves/approximations.js +27 -0
  131. package/dist/daylightSimulation/curves/approximations.js.map +1 -0
  132. package/dist/daylightSimulation/curves/index.d.ts +15 -0
  133. package/dist/daylightSimulation/curves/index.d.ts.map +1 -0
  134. package/dist/daylightSimulation/curves/index.js +56 -0
  135. package/dist/daylightSimulation/curves/index.js.map +1 -0
  136. package/dist/daylightSimulation/curves/mathematical.d.ts +15 -0
  137. package/dist/daylightSimulation/curves/mathematical.d.ts.map +1 -0
  138. package/dist/daylightSimulation/curves/mathematical.js +33 -0
  139. package/dist/daylightSimulation/curves/mathematical.js.map +1 -0
  140. package/dist/daylightSimulation/curves/realistic.d.ts +43 -0
  141. package/dist/daylightSimulation/curves/realistic.d.ts.map +1 -0
  142. package/dist/daylightSimulation/curves/realistic.js +259 -0
  143. package/dist/daylightSimulation/curves/realistic.js.map +1 -0
  144. package/dist/daylightSimulation/geoipUtil.d.ts.map +1 -0
  145. package/dist/daylightSimulation/geoipUtil.js.map +1 -0
  146. package/dist/daylightSimulation/graphSchedule.d.ts +8 -0
  147. package/dist/daylightSimulation/graphSchedule.d.ts.map +1 -0
  148. package/dist/daylightSimulation/graphSchedule.js +116 -0
  149. package/dist/daylightSimulation/graphSchedule.js.map +1 -0
  150. package/dist/daylightSimulation/scheduleMaker.d.ts +33 -0
  151. package/dist/daylightSimulation/scheduleMaker.d.ts.map +1 -0
  152. package/dist/daylightSimulation/scheduleMaker.js +192 -0
  153. package/dist/daylightSimulation/scheduleMaker.js.map +1 -0
  154. package/dist/daylightSimulation/textSchedule.d.ts +9 -0
  155. package/dist/daylightSimulation/textSchedule.d.ts.map +1 -0
  156. package/dist/daylightSimulation/textSchedule.js +172 -0
  157. package/dist/daylightSimulation/textSchedule.js.map +1 -0
  158. package/dist/{cctUtil.d.ts → daylightSimulation/types.d.ts} +7 -5
  159. package/dist/daylightSimulation/types.d.ts.map +1 -0
  160. package/dist/daylightSimulation/types.js +16 -0
  161. package/dist/daylightSimulation/types.js.map +1 -0
  162. package/dist/deviceControl/autostart.d.ts.map +1 -0
  163. package/dist/deviceControl/autostart.js.map +1 -0
  164. package/dist/deviceControl/constants.d.ts +23 -0
  165. package/dist/deviceControl/constants.d.ts.map +1 -0
  166. package/dist/deviceControl/constants.js +20 -0
  167. package/dist/deviceControl/constants.js.map +1 -0
  168. package/dist/deviceControl/discovery.d.ts.map +1 -0
  169. package/dist/{discovery.js → deviceControl/discovery.js} +0 -2
  170. package/dist/deviceControl/discovery.js.map +1 -0
  171. package/dist/{lightControl.d.ts → deviceControl/lightControl.d.ts} +67 -78
  172. package/dist/deviceControl/lightControl.d.ts.map +1 -0
  173. package/dist/{lightControl.js → deviceControl/lightControl.js} +292 -203
  174. package/dist/deviceControl/lightControl.js.map +1 -0
  175. package/dist/deviceControl/types.d.ts +59 -0
  176. package/dist/deviceControl/types.d.ts.map +1 -0
  177. package/dist/deviceControl/types.js.map +1 -0
  178. package/dist/test/MockLightServer.d.ts.map +1 -1
  179. package/dist/test/MockLightServer.js +134 -12
  180. package/dist/test/MockLightServer.js.map +1 -1
  181. package/package.json +11 -7
  182. package/scripts/extract-api.ts +158 -0
  183. package/scripts/extract-usage.ts +199 -0
  184. package/scripts/release.js +11 -11
  185. package/CHANGELOG.md +0 -67
  186. package/dist/autostart.d.ts.map +0 -1
  187. package/dist/autostart.js.map +0 -1
  188. package/dist/cctUtil.d.ts.map +0 -1
  189. package/dist/cctUtil.js +0 -435
  190. package/dist/cctUtil.js.map +0 -1
  191. package/dist/commands/autoCct.d.ts +0 -5
  192. package/dist/commands/autoCct.d.ts.map +0 -1
  193. package/dist/commands/autoCct.js.map +0 -1
  194. package/dist/commands/cct.d.ts.map +0 -1
  195. package/dist/commands/cct.js.map +0 -1
  196. package/dist/commands/color.d.ts.map +0 -1
  197. package/dist/commands/color.js +0 -57
  198. package/dist/commands/color.js.map +0 -1
  199. package/dist/commands/config.d.ts.map +0 -1
  200. package/dist/commands/config.js.map +0 -1
  201. package/dist/commands/discover.d.ts.map +0 -1
  202. package/dist/commands/discover.js.map +0 -1
  203. package/dist/commands/graphSchedule.d.ts.map +0 -1
  204. package/dist/commands/graphSchedule.js +0 -293
  205. package/dist/commands/graphSchedule.js.map +0 -1
  206. package/dist/commands/hsi.d.ts.map +0 -1
  207. package/dist/commands/hsi.js +0 -59
  208. package/dist/commands/hsi.js.map +0 -1
  209. package/dist/commands/intensity.d.ts.map +0 -1
  210. package/dist/commands/intensity.js +0 -50
  211. package/dist/commands/intensity.js.map +0 -1
  212. package/dist/commands/list.d.ts.map +0 -1
  213. package/dist/commands/list.js.map +0 -1
  214. package/dist/commands/power.d.ts.map +0 -1
  215. package/dist/commands/power.js +0 -120
  216. package/dist/commands/power.js.map +0 -1
  217. package/dist/commands/printSchedule.d.ts +0 -5
  218. package/dist/commands/printSchedule.d.ts.map +0 -1
  219. package/dist/commands/printSchedule.js +0 -452
  220. package/dist/commands/printSchedule.js.map +0 -1
  221. package/dist/commands/service.d.ts.map +0 -1
  222. package/dist/commands/service.js.map +0 -1
  223. package/dist/commands/simulateSchedule.d.ts.map +0 -1
  224. package/dist/commands/simulateSchedule.js +0 -199
  225. package/dist/commands/simulateSchedule.js.map +0 -1
  226. package/dist/commands/status.d.ts.map +0 -1
  227. package/dist/commands/status.js +0 -48
  228. package/dist/commands/status.js.map +0 -1
  229. package/dist/constants.d.ts.map +0 -1
  230. package/dist/constants.js.map +0 -1
  231. package/dist/discovery.d.ts.map +0 -1
  232. package/dist/discovery.js.map +0 -1
  233. package/dist/geoipUtil.d.ts.map +0 -1
  234. package/dist/geoipUtil.js.map +0 -1
  235. package/dist/lightControl.d.ts.map +0 -1
  236. package/dist/lightControl.js.map +0 -1
  237. package/dist/types.d.ts +0 -41
  238. package/dist/types.d.ts.map +0 -1
  239. package/dist/types.js.map +0 -1
  240. /package/dist/{geoipUtil.d.ts → daylightSimulation/geoipUtil.d.ts} +0 -0
  241. /package/dist/{geoipUtil.js → daylightSimulation/geoipUtil.js} +0 -0
  242. /package/dist/{autostart.d.ts → deviceControl/autostart.d.ts} +0 -0
  243. /package/dist/{autostart.js → deviceControl/autostart.js} +0 -0
  244. /package/dist/{discovery.d.ts → deviceControl/discovery.d.ts} +0 -0
  245. /package/dist/{types.js → deviceControl/types.js} +0 -0
@@ -0,0 +1,116 @@
1
+ import { ChartJSNodeCanvas } from 'chartjs-node-canvas';
2
+ const COLORS = [
3
+ 'rgb(54, 162, 235)', // Blue
4
+ 'rgb(255, 99, 132)', // Red
5
+ 'rgb(75, 192, 192)', // Teal
6
+ 'rgb(255, 205, 86)', // Yellow
7
+ 'rgb(153, 102, 255)', // Purple
8
+ 'rgb(255, 159, 64)', // Orange
9
+ 'rgb(75, 192, 75)', // Green
10
+ 'rgb(255, 0, 255)', // Magenta
11
+ ];
12
+ export async function graphSchedule(schedule, options = {}) {
13
+ const width = options.width || 1200;
14
+ const height = options.height || 600;
15
+ const metrics = options.metrics || 'both';
16
+ const canvas = new ChartJSNodeCanvas({ width, height });
17
+ const datasets = [];
18
+ const labels = schedule.points.map((p) => {
19
+ if (p.time.getMinutes() === 0) {
20
+ return p.time.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });
21
+ }
22
+ return '';
23
+ });
24
+ const showIntensity = metrics === 'intensity' || metrics === 'both' || metrics === 'all';
25
+ const showCct = metrics === 'cct' || metrics === 'both' || metrics === 'all';
26
+ const showLux = metrics === 'lux' || metrics === 'all';
27
+ schedule.curves.forEach((curve, index) => {
28
+ const color = schedule.curves.length > 1 ? COLORS[index % COLORS.length] : 'rgb(54, 162, 235)';
29
+ const cctColor = schedule.curves.length > 1 ? COLORS[(index + 1) % COLORS.length] : 'rgb(255, 99, 132)';
30
+ const luxColor = schedule.curves.length > 1 ? COLORS[(index + 2) % COLORS.length] : 'rgb(75, 192, 75)';
31
+ if (showIntensity) {
32
+ datasets.push({
33
+ label: schedule.curves.length > 1 ? `${curve} (Int)` : 'Intensity (%)',
34
+ data: schedule.points.map((p) => (p.values.get(curve)?.intensity ?? 0) / 10),
35
+ borderColor: color,
36
+ backgroundColor: 'transparent',
37
+ yAxisID: 'y',
38
+ fill: false,
39
+ borderDash: showIntensity && showCct ? [5, 5] : [],
40
+ pointRadius: 0,
41
+ borderWidth: 2,
42
+ });
43
+ }
44
+ if (showCct) {
45
+ datasets.push({
46
+ label: schedule.curves.length > 1 ? `${curve} (CCT)` : 'CCT (K)',
47
+ data: schedule.points.map((p) => p.values.get(curve)?.cct ?? 0),
48
+ borderColor: cctColor,
49
+ backgroundColor: 'transparent',
50
+ yAxisID: 'y1',
51
+ fill: false,
52
+ pointRadius: 0,
53
+ borderWidth: 2,
54
+ });
55
+ }
56
+ if (showLux) {
57
+ datasets.push({
58
+ label: schedule.curves.length > 1 ? `${curve} (Lux)` : 'Light Output (Lux)',
59
+ data: schedule.points.map((p) => p.values.get(curve)?.lightOutput ?? 0),
60
+ borderColor: luxColor,
61
+ backgroundColor: 'transparent',
62
+ yAxisID: 'y2',
63
+ fill: false,
64
+ pointRadius: 0,
65
+ borderWidth: 2,
66
+ });
67
+ }
68
+ });
69
+ const titleCurve = schedule.curves.length > 1 ? (schedule.curves.length === 7 ? 'All Curves' : 'Multiple Curves') : schedule.curves[0];
70
+ const configuration = {
71
+ type: 'line',
72
+ data: { labels, datasets },
73
+ options: {
74
+ plugins: {
75
+ title: {
76
+ display: true,
77
+ text: `Schedule: ${schedule.date.toDateString()} (Lat: ${schedule.lat.toFixed(2)}, Lon: ${schedule.lon.toFixed(2)}) - Curve: ${titleCurve}`,
78
+ },
79
+ },
80
+ scales: {
81
+ x: {
82
+ ticks: {
83
+ autoSkip: false,
84
+ maxRotation: 45,
85
+ callback: (_val, index) => labels[index],
86
+ },
87
+ },
88
+ y: {
89
+ type: 'linear',
90
+ display: showIntensity,
91
+ position: 'left',
92
+ title: { display: true, text: 'Intensity (%)' },
93
+ min: 0,
94
+ max: 100,
95
+ },
96
+ y1: {
97
+ type: 'linear',
98
+ display: showCct,
99
+ position: 'right',
100
+ title: { display: true, text: 'CCT (K)' },
101
+ },
102
+ y2: {
103
+ type: 'linear',
104
+ display: showLux,
105
+ position: 'right',
106
+ title: { display: true, text: 'Light Output (Lux)' },
107
+ grid: { drawOnChartArea: false }, // Only show grid for left axis
108
+ min: 0,
109
+ },
110
+ },
111
+ },
112
+ };
113
+ // biome-ignore lint/suspicious/noExplicitAny: Chart.js configuration type is complex
114
+ return await canvas.renderToBuffer(configuration);
115
+ }
116
+ //# sourceMappingURL=graphSchedule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphSchedule.js","sourceRoot":"","sources":["../../src/daylightSimulation/graphSchedule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { CCTResult, CommandDeps } from './types.js';
2
+ export interface SchedulePoint {
3
+ time: Date;
4
+ values: Map<string, CCTResult>;
5
+ isSpecial: boolean;
6
+ eventName?: string;
7
+ }
8
+ export interface Schedule {
9
+ lat: number;
10
+ lon: number;
11
+ date: Date;
12
+ source: string;
13
+ points: SchedulePoint[];
14
+ curves: string[];
15
+ times: Record<string, Date | null | undefined>;
16
+ }
17
+ export interface MakeScheduleOptions {
18
+ lat?: string;
19
+ lon?: string;
20
+ date?: string;
21
+ intervalMinutes?: number;
22
+ curves?: string;
23
+ includeSpecialTimes?: boolean;
24
+ bufferMinutes?: number;
25
+ startTime?: Date;
26
+ endTime?: Date;
27
+ }
28
+ export declare class ScheduleMaker {
29
+ private deps;
30
+ constructor(deps: CommandDeps);
31
+ makeSchedule(options: MakeScheduleOptions): Promise<Schedule>;
32
+ }
33
+ //# sourceMappingURL=scheduleMaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduleMaker.d.ts","sourceRoot":"","sources":["../../src/daylightSimulation/scheduleMaker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,IAAI,CAAc;gBAEd,IAAI,EAAE,WAAW;IAIvB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAkMpE"}
@@ -0,0 +1,192 @@
1
+ import { SPECIAL_TIME_CONFIG } from './constants.js';
2
+ export class ScheduleMaker {
3
+ deps;
4
+ constructor(deps) {
5
+ this.deps = deps;
6
+ }
7
+ async makeSchedule(options) {
8
+ const { getLocationFromIP } = await import('./geoipUtil.js');
9
+ const { calculateCCT, CurveType, parseCurveType } = await import('./cctUtil.js');
10
+ const SunCalc = (await import('suncalc')).default;
11
+ const { getTimes } = SunCalc;
12
+ const { loadConfig } = this.deps;
13
+ let lat;
14
+ let lon;
15
+ const date = options.date ? new Date(options.date) : new Date();
16
+ let source = '';
17
+ if (options.date && Number.isNaN(date.getTime())) {
18
+ throw new Error('Invalid date format. Use ISO format (e.g., 2025-10-26)');
19
+ }
20
+ // Resolve Lat/Lon
21
+ if (options.lat !== undefined && options.lon !== undefined) {
22
+ lat = parseFloat(options.lat);
23
+ lon = parseFloat(options.lon);
24
+ if (Number.isNaN(lat) || lat < -90 || lat > 90)
25
+ throw new Error('Latitude must be between -90 and 90');
26
+ if (Number.isNaN(lon) || lon < -180 || lon > 180)
27
+ throw new Error('Longitude must be between -180 and 180');
28
+ source = 'manual';
29
+ }
30
+ else if (loadConfig) {
31
+ const config = loadConfig();
32
+ if (config && typeof config.latitude === 'number' && typeof config.longitude === 'number') {
33
+ lat = config.latitude;
34
+ lon = config.longitude;
35
+ source = 'config';
36
+ }
37
+ }
38
+ if (lat === undefined || lon === undefined) {
39
+ try {
40
+ const res = await fetch('https://api.ipify.org?format=json');
41
+ const data = await res.json();
42
+ const location = getLocationFromIP(data.ip);
43
+ if (!location || !location.ll)
44
+ throw new Error('Could not determine location');
45
+ [lat, lon] = location.ll;
46
+ source = `geoip (${data.ip})`;
47
+ }
48
+ catch (_err) {
49
+ throw new Error('Could not determine location. Use --lat and --lon to specify manually.');
50
+ }
51
+ }
52
+ // Resolve Curves
53
+ const allCurveTypesOrdered = [
54
+ 'HANN',
55
+ 'WIDER_MIDDLE_SMALL',
56
+ 'WIDER_MIDDLE_MEDIUM',
57
+ 'WIDER_MIDDLE_LARGE',
58
+ 'CIE_DAYLIGHT',
59
+ 'SUN_ALTITUDE',
60
+ 'PEREZ_DAYLIGHT',
61
+ 'PHYSICS',
62
+ 'BLACKBODY',
63
+ 'HAZY',
64
+ ];
65
+ let curveTypes = ['HANN'];
66
+ const curveOption = options.curves?.toLowerCase() || '';
67
+ if (curveOption === 'all') {
68
+ curveTypes = [...allCurveTypesOrdered];
69
+ }
70
+ else if (curveOption) {
71
+ const parts = curveOption.split(',').map((s) => s.trim());
72
+ const parsedList = [];
73
+ for (const part of parts) {
74
+ if (part === 'all') {
75
+ parsedList.push(...allCurveTypesOrdered);
76
+ }
77
+ else {
78
+ parsedList.push(parseCurveType(part));
79
+ }
80
+ }
81
+ const unique = new Set(parsedList);
82
+ curveTypes = allCurveTypesOrdered.filter((c) => unique.has(c));
83
+ }
84
+ else if (loadConfig) {
85
+ const config = loadConfig();
86
+ if (config?.defaultCurve) {
87
+ try {
88
+ curveTypes = [parseCurveType(config.defaultCurve)];
89
+ }
90
+ catch (_) {
91
+ curveTypes = [...allCurveTypesOrdered];
92
+ }
93
+ }
94
+ else {
95
+ curveTypes = [...allCurveTypesOrdered];
96
+ }
97
+ }
98
+ else {
99
+ curveTypes = [...allCurveTypesOrdered];
100
+ }
101
+ const times = getTimes(date, lat, lon);
102
+ const specialTimesMap = new Map();
103
+ for (const config of SPECIAL_TIME_CONFIG) {
104
+ const t = times[config.key];
105
+ if (t && !Number.isNaN(t.getTime())) {
106
+ specialTimesMap.set(t.getTime(), config.key);
107
+ }
108
+ }
109
+ if (times.nadir && !Number.isNaN(times.nadir.getTime())) {
110
+ specialTimesMap.set(times.nadir.getTime(), 'nadir');
111
+ }
112
+ // Determine generation bounds
113
+ let genStart = options.startTime;
114
+ let genEnd = options.endTime;
115
+ if (!genStart || !genEnd) {
116
+ const rangeTimes = Array.from(specialTimesMap.entries())
117
+ .filter(([_, key]) => key !== 'nadir')
118
+ .map(([t, _]) => t);
119
+ if (rangeTimes.length === 0)
120
+ throw new Error('Could not calculate special times for range');
121
+ const minTime = Math.min(...rangeTimes);
122
+ const maxTime = Math.max(...rangeTimes);
123
+ const bufferMs = (options.bufferMinutes ?? 30) * 60 * 1000;
124
+ if (!genStart)
125
+ genStart = new Date(minTime - bufferMs);
126
+ if (!genEnd)
127
+ genEnd = new Date(maxTime + bufferMs);
128
+ }
129
+ const intervalMs = (options.intervalMinutes ?? 30) * 60 * 1000;
130
+ const allTimeStamps = new Set();
131
+ // Add intervals
132
+ let curr = genStart.getTime();
133
+ while (curr <= genEnd.getTime()) {
134
+ allTimeStamps.add(curr);
135
+ curr += intervalMs;
136
+ }
137
+ // Add special times if requested
138
+ if (options.includeSpecialTimes !== false) {
139
+ for (const t of specialTimesMap.keys()) {
140
+ if (t >= genStart.getTime() && t <= genEnd.getTime()) {
141
+ allTimeStamps.add(t);
142
+ }
143
+ }
144
+ }
145
+ const sortedTimes = Array.from(allTimeStamps).sort((a, b) => a - b);
146
+ const uniqueTimes = [];
147
+ const threshold = 30000; // 30s
148
+ for (const t of sortedTimes) {
149
+ if (uniqueTimes.length === 0 || t - uniqueTimes[uniqueTimes.length - 1] > threshold) {
150
+ uniqueTimes.push(t);
151
+ }
152
+ }
153
+ // Load config bounds
154
+ const cfg = (loadConfig?.() ?? {});
155
+ const cctOpts = {
156
+ cctMinK: typeof cfg.cctMin === 'number' ? cfg.cctMin : undefined,
157
+ cctMaxK: typeof cfg.cctMax === 'number' ? cfg.cctMax : undefined,
158
+ intensityMinPct: typeof cfg.intensityMin === 'number' ? cfg.intensityMin : undefined,
159
+ intensityMaxPct: typeof cfg.intensityMax === 'number' ? cfg.intensityMax : undefined,
160
+ };
161
+ if (lat === undefined || lon === undefined) {
162
+ throw new Error('Location is required for schedule points');
163
+ }
164
+ const points = uniqueTimes.map((t) => {
165
+ const currentTime = new Date(t);
166
+ const values = new Map();
167
+ for (const curve of curveTypes) {
168
+ const result = calculateCCT(lat, lon, currentTime, cctOpts, CurveType[curve]);
169
+ values.set(curve, result);
170
+ }
171
+ const eventKey = specialTimesMap.get(t);
172
+ return {
173
+ time: currentTime,
174
+ values,
175
+ isSpecial: !!eventKey,
176
+ eventName: eventKey,
177
+ };
178
+ });
179
+ return {
180
+ lat,
181
+ lon,
182
+ date,
183
+ source,
184
+ points,
185
+ curves: curveTypes,
186
+ times: {
187
+ ...times,
188
+ },
189
+ };
190
+ }
191
+ }
192
+ //# sourceMappingURL=scheduleMaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduleMaker.js","sourceRoot":"","sources":["../../src/daylightSimulation/scheduleMaker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Schedule } from './scheduleMaker.js';
2
+ export interface TextScheduleOptions {
3
+ csv?: boolean;
4
+ private?: boolean;
5
+ interval?: string;
6
+ stripAnsi?: boolean;
7
+ }
8
+ export declare function textSchedule(schedule: Schedule, options?: TextScheduleOptions): string;
9
+ //# sourceMappingURL=textSchedule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textSchedule.d.ts","sourceRoot":"","sources":["../../src/daylightSimulation/textSchedule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAkDD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,CA0J1F"}
@@ -0,0 +1,172 @@
1
+ import chalk from 'chalk';
2
+ import { SPECIAL_TIME_CONFIG } from './constants.js';
3
+ // Helper function to get color and emoji for a special time
4
+ function getSpecialTimeStyling(currentTime, times) {
5
+ const isSpecialTime = (specialTime) => {
6
+ if (!specialTime || Number.isNaN(specialTime.getTime()))
7
+ return false;
8
+ return Math.abs(currentTime.getTime() - specialTime.getTime()) < 30000; // 30 seconds
9
+ };
10
+ for (const config of SPECIAL_TIME_CONFIG) {
11
+ if (isSpecialTime(times[config.key])) {
12
+ return { color: config.color, emoji: config.emoji };
13
+ }
14
+ }
15
+ return { color: chalk.white, emoji: '' };
16
+ }
17
+ const formatCoordinate = (coord, isPrivate) => {
18
+ return isPrivate ? `${Math.round(coord)}.XXXX` : coord.toFixed(4);
19
+ };
20
+ const formatSource = (src, isPrivate) => {
21
+ if (!isPrivate || !src.includes('('))
22
+ return src;
23
+ const ipMatch = src.match(/(\d+\.\d+\.\d+\.\d+)/);
24
+ if (ipMatch) {
25
+ const ipParts = ipMatch[1].split('.');
26
+ ipParts[0] = 'XXX';
27
+ ipParts[1] = 'XXX';
28
+ ipParts[2] = 'XXX';
29
+ return src.replace(ipMatch[1], ipParts.join('.'));
30
+ }
31
+ return src;
32
+ };
33
+ const formatTitle = (key) => {
34
+ return key
35
+ .replace(/([A-Z])/g, ' $1')
36
+ .replace(/^([a-z])/, (c) => c.toUpperCase())
37
+ .trim();
38
+ };
39
+ const stripAnsiCodes = (message) => {
40
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: intentional use for ANSI stripping
41
+ return message.replace(/\u001b\[\d+m/g, '');
42
+ };
43
+ export function textSchedule(schedule, options = {}) {
44
+ const lines = [];
45
+ const isPrivate = options.private !== false;
46
+ const { csv, interval, stripAnsi } = options;
47
+ const push = (message) => {
48
+ lines.push(stripAnsi ? stripAnsiCodes(message) : message);
49
+ };
50
+ if (csv) {
51
+ // CSV Output
52
+ const header = ['DateTime', 'Location', 'Event'];
53
+ schedule.curves.forEach((c) => {
54
+ header.push(`${c}_CCT`, `${c}_Intensity`, `${c}_Lux`);
55
+ });
56
+ push(header.join(','));
57
+ for (const point of schedule.points) {
58
+ const dateTimeStr = point.time.toISOString();
59
+ const locationStr = `${schedule.lat},${schedule.lon}`;
60
+ const eventName = point.eventName ? formatTitle(point.eventName) : '';
61
+ const row = [dateTimeStr, `"${locationStr}"`, eventName];
62
+ schedule.curves.forEach((curve) => {
63
+ const val = point.values.get(curve);
64
+ row.push(val?.cct.toString() ?? '', val ? (val.intensity / 10).toFixed(1) : '', val?.lightOutput?.toString() ?? '');
65
+ });
66
+ push(row.join(','));
67
+ }
68
+ }
69
+ else {
70
+ // Standard Output
71
+ push(chalk.blue('\n═══════════════════════════════════════════════════════════'));
72
+ push(chalk.blue(' Auto-CCT Schedule Preview'));
73
+ push(chalk.blue('═══════════════════════════════════════════════════════════\n'));
74
+ push(chalk.cyan(`Location: ${formatCoordinate(schedule.lat, isPrivate)}°, ${formatCoordinate(schedule.lon, isPrivate)}° (${formatSource(schedule.source, isPrivate)})`));
75
+ push(chalk.cyan(`Date: ${schedule.date.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })}`));
76
+ push(chalk.cyan(`Interval: Every ${interval ?? '30'} minute${interval !== '1' ? 's' : ''}`));
77
+ push(chalk.cyan(schedule.curves.length > 1
78
+ ? `Curve: Multiple curves selected\n`
79
+ : `Curve: ${schedule.curves[0].toLowerCase()}\n`));
80
+ const allSpecialTimes = [
81
+ ...SPECIAL_TIME_CONFIG.map((conf) => ({
82
+ key: conf.key,
83
+ emoji: conf.emoji,
84
+ color: conf.color,
85
+ time: schedule.times[conf.key],
86
+ })),
87
+ { key: 'nadir', emoji: 'NA', color: chalk.blue, time: schedule.times.nadir },
88
+ ].filter((item) => item.time && !Number.isNaN(item.time.getTime()));
89
+ const halfLength = Math.ceil(allSpecialTimes.length / 2);
90
+ for (let i = 0; i < halfLength; i++) {
91
+ const left = allSpecialTimes[i];
92
+ const right = allSpecialTimes[i + halfLength];
93
+ let line = '';
94
+ if (left?.time) {
95
+ const timeStr = left.time.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });
96
+ line += left.color(`${`${left.emoji} ${formatTitle(left.key)}`.padEnd(20)}: ${timeStr}`);
97
+ }
98
+ if (right?.time) {
99
+ const timeStr = right.time.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });
100
+ line += ` ${right.color(`${`${right.emoji} ${formatTitle(right.key)}`.padEnd(20)}: ${timeStr}`)}`;
101
+ }
102
+ push(line);
103
+ }
104
+ push(chalk.blue('\n'));
105
+ if (schedule.curves.length > 1) {
106
+ const headers = [
107
+ 'Time',
108
+ ...schedule.curves.map((c) => {
109
+ switch (c) {
110
+ case 'WIDER_MIDDLE_SMALL':
111
+ return 'WM_SML';
112
+ case 'WIDER_MIDDLE_MEDIUM':
113
+ return 'WM_MED';
114
+ case 'WIDER_MIDDLE_LARGE':
115
+ return 'WM_LRG';
116
+ case 'CIE_DAYLIGHT':
117
+ return 'CIE';
118
+ case 'SUN_ALTITUDE':
119
+ return 'SUN_ALT';
120
+ case 'PEREZ_DAYLIGHT':
121
+ return 'PEREZ';
122
+ case 'PHYSICS':
123
+ return 'PHYS';
124
+ case 'BLACKBODY':
125
+ return 'BLACK';
126
+ case 'HAZY':
127
+ return 'HAZY';
128
+ default:
129
+ return c.replace(/_/g, ' ');
130
+ }
131
+ }),
132
+ ];
133
+ const colWidths = [13, ...schedule.curves.map(() => 12)];
134
+ const totalWidth = colWidths.reduce((a, b) => a + b, 0);
135
+ let headerLine = '';
136
+ headers.forEach((h, i) => {
137
+ headerLine += h.padEnd(colWidths[i]);
138
+ });
139
+ push(chalk.blue('─'.repeat(totalWidth)));
140
+ push(chalk.blue(headerLine));
141
+ push(chalk.blue('─'.repeat(totalWidth)));
142
+ for (const point of schedule.points) {
143
+ const timeStr = point.time.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });
144
+ const { color, emoji } = getSpecialTimeStyling(point.time, schedule.times);
145
+ let rowLine = color(`${timeStr} ${emoji || ' '} `);
146
+ schedule.curves.forEach((curve, index) => {
147
+ const val = point.values.get(curve);
148
+ const valStr = val ? `${val.cct}K/${(val.intensity / 10).toFixed(0)}%` : '';
149
+ rowLine += color(valStr.padEnd(colWidths[index + 1]));
150
+ });
151
+ push(rowLine);
152
+ }
153
+ push(chalk.blue(`${'─'.repeat(totalWidth)}\n`));
154
+ }
155
+ else {
156
+ const singleCurveWidth = 31;
157
+ push(chalk.blue('─'.repeat(singleCurveWidth)));
158
+ push(chalk.blue('Time CCT/Intensity'));
159
+ push(chalk.blue('─'.repeat(singleCurveWidth)));
160
+ for (const point of schedule.points) {
161
+ const val = point.values.get(schedule.curves[0]);
162
+ const timeStr = point.time.toLocaleTimeString(undefined, { hour: '2-digit', minute: '2-digit' });
163
+ const valStr = val ? `${val.cct}K/${(val.intensity / 10).toFixed(0)}%`.padEnd(18) : '';
164
+ const { color, emoji } = getSpecialTimeStyling(point.time, schedule.times);
165
+ push(color(`${timeStr} ${emoji || ' '} ${valStr}`));
166
+ }
167
+ push(chalk.blue(`${'─'.repeat(singleCurveWidth)}\n`));
168
+ }
169
+ }
170
+ return lines.join('\n');
171
+ }
172
+ //# sourceMappingURL=textSchedule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textSchedule.js","sourceRoot":"","sources":["../../src/daylightSimulation/textSchedule.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
+ export * from '../deviceControl/types.js';
1
2
  export interface CCTResult {
2
3
  cct: number;
3
4
  intensity: number;
5
+ lightOutput?: number;
4
6
  }
5
7
  export interface CCTOptions {
6
8
  cctMinK?: number;
@@ -15,9 +17,9 @@ export declare enum CurveType {
15
17
  WIDER_MIDDLE_LARGE = "wider-middle-large",
16
18
  CIE_DAYLIGHT = "cie-daylight",
17
19
  SUN_ALTITUDE = "sun-altitude",
18
- PEREZ_DAYLIGHT = "perez-daylight"
20
+ PEREZ_DAYLIGHT = "perez-daylight",
21
+ PHYSICS = "physics",
22
+ BLACKBODY = "blackbody",
23
+ HAZY = "hazy"
19
24
  }
20
- export declare function parseCurveType(curve: string): keyof typeof CurveType;
21
- export declare function getAvailableCurves(): string[];
22
- export declare function calculateCCT(lat: number, lon: number, date?: Date, opts?: CCTOptions, curveType?: CurveType): CCTResult;
23
- //# sourceMappingURL=cctUtil.d.ts.map
25
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/daylightSimulation/types.ts"],"names":[],"mappings":"AACA,cAAc,2BAA2B,CAAC;AAE1C,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,kBAAkB,uBAAuB;IACzC,mBAAmB,wBAAwB;IAC3C,kBAAkB,uBAAuB;IACzC,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;IACjC,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,IAAI,SAAS;CACd"}
@@ -0,0 +1,16 @@
1
+ // Daylight simulation specific types
2
+ export * from '../deviceControl/types.js';
3
+ export var CurveType;
4
+ (function (CurveType) {
5
+ CurveType["HANN"] = "hann";
6
+ CurveType["WIDER_MIDDLE_SMALL"] = "wider-middle-small";
7
+ CurveType["WIDER_MIDDLE_MEDIUM"] = "wider-middle-medium";
8
+ CurveType["WIDER_MIDDLE_LARGE"] = "wider-middle-large";
9
+ CurveType["CIE_DAYLIGHT"] = "cie-daylight";
10
+ CurveType["SUN_ALTITUDE"] = "sun-altitude";
11
+ CurveType["PEREZ_DAYLIGHT"] = "perez-daylight";
12
+ CurveType["PHYSICS"] = "physics";
13
+ CurveType["BLACKBODY"] = "blackbody";
14
+ CurveType["HAZY"] = "hazy";
15
+ })(CurveType || (CurveType = {}));
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/daylightSimulation/types.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,cAAc,2BAA2B,CAAC;AAe1C,MAAM,CAAN,IAAY,SAWX;AAXD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,sDAAyC,CAAA;IACzC,wDAA2C,CAAA;IAC3C,sDAAyC,CAAA;IACzC,0CAA6B,CAAA;IAC7B,0CAA6B,CAAA;IAC7B,8CAAiC,CAAA;IACjC,gCAAmB,CAAA;IACnB,oCAAuB,CAAA;IACvB,0BAAa,CAAA;AACf,CAAC,EAXW,SAAS,KAAT,SAAS,QAWpB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autostart.d.ts","sourceRoot":"","sources":["../../src/deviceControl/autostart.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAkCD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBjF;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAkE7E;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAuC9E"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autostart.js","sourceRoot":"","sources":["../../src/deviceControl/autostart.ts"],"names":[],"mappings":"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"}