amaran-light-cli 1.0.2 → 1.1.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 (70) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +58 -2
  3. package/dist/__tests__/autoCct.test.js +10 -0
  4. package/dist/__tests__/autoCct.test.js.map +1 -1
  5. package/dist/__tests__/autostart.test.d.ts +2 -0
  6. package/dist/__tests__/autostart.test.d.ts.map +1 -0
  7. package/dist/__tests__/autostart.test.js +131 -0
  8. package/dist/__tests__/autostart.test.js.map +1 -0
  9. package/dist/__tests__/cctUtil.test.js +52 -39
  10. package/dist/__tests__/cctUtil.test.js.map +1 -1
  11. package/dist/__tests__/cli.smoke.test.js +2 -2
  12. package/dist/__tests__/cli.smoke.test.js.map +1 -1
  13. package/dist/__tests__/intensityApi.test.js.map +1 -1
  14. package/dist/autostart.d.ts +29 -0
  15. package/dist/autostart.d.ts.map +1 -0
  16. package/dist/autostart.js +194 -0
  17. package/dist/autostart.js.map +1 -0
  18. package/dist/cctUtil.d.ts +12 -15
  19. package/dist/cctUtil.d.ts.map +1 -1
  20. package/dist/cctUtil.js +411 -68
  21. package/dist/cctUtil.js.map +1 -1
  22. package/dist/cli.d.ts.map +1 -1
  23. package/dist/cli.js +131 -22
  24. package/dist/cli.js.map +1 -1
  25. package/dist/commands/autoCct.d.ts +1 -1
  26. package/dist/commands/autoCct.d.ts.map +1 -1
  27. package/dist/commands/autoCct.js +31 -11
  28. package/dist/commands/autoCct.js.map +1 -1
  29. package/dist/commands/cct.d.ts.map +1 -1
  30. package/dist/commands/cct.js +11 -6
  31. package/dist/commands/cct.js.map +1 -1
  32. package/dist/commands/color.d.ts.map +1 -1
  33. package/dist/commands/color.js.map +1 -1
  34. package/dist/commands/hsi.d.ts.map +1 -1
  35. package/dist/commands/hsi.js.map +1 -1
  36. package/dist/commands/intensity.d.ts.map +1 -1
  37. package/dist/commands/intensity.js.map +1 -1
  38. package/dist/commands/list.d.ts.map +1 -1
  39. package/dist/commands/list.js.map +1 -1
  40. package/dist/commands/power.d.ts.map +1 -1
  41. package/dist/commands/power.js.map +1 -1
  42. package/dist/commands/schedule.d.ts +1 -1
  43. package/dist/commands/schedule.d.ts.map +1 -1
  44. package/dist/commands/schedule.js +284 -56
  45. package/dist/commands/schedule.js.map +1 -1
  46. package/dist/commands/service.d.ts.map +1 -1
  47. package/dist/commands/service.js +21 -4
  48. package/dist/commands/service.js.map +1 -1
  49. package/dist/commands/simulateSchedule.d.ts +5 -0
  50. package/dist/commands/simulateSchedule.d.ts.map +1 -0
  51. package/dist/commands/simulateSchedule.js +219 -0
  52. package/dist/commands/simulateSchedule.js.map +1 -0
  53. package/dist/commands/status.d.ts.map +1 -1
  54. package/dist/commands/status.js.map +1 -1
  55. package/dist/commands.d.ts.map +1 -1
  56. package/dist/commands.js +27 -22
  57. package/dist/commands.js.map +1 -1
  58. package/dist/constants.d.ts +96 -0
  59. package/dist/constants.d.ts.map +1 -0
  60. package/dist/constants.js +57 -0
  61. package/dist/constants.js.map +1 -0
  62. package/dist/discovery.d.ts.map +1 -1
  63. package/dist/discovery.js.map +1 -1
  64. package/dist/lightControl.d.ts +4 -2
  65. package/dist/lightControl.d.ts.map +1 -1
  66. package/dist/lightControl.js +18 -4
  67. package/dist/lightControl.js.map +1 -1
  68. package/dist/types.d.ts +1 -0
  69. package/dist/types.d.ts.map +1 -1
  70. package/package.json +1 -1
package/dist/cctUtil.js CHANGED
@@ -1,93 +1,436 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CurveType = void 0;
4
+ exports.parseCurveType = parseCurveType;
5
+ exports.getAvailableCurves = getAvailableCurves;
3
6
  exports.calculateCCT = calculateCCT;
4
7
  const suncalc_1 = require("suncalc");
5
- const _CCT_DEFAULTS = {
6
- cctMinK: 2000,
7
- cctMaxK: 6500,
8
- intensityMinPct: 5,
9
- intensityMaxPct: 100,
8
+ const constants_1 = require("./constants");
9
+ var CurveType;
10
+ (function (CurveType) {
11
+ CurveType["HANN"] = "hann";
12
+ CurveType["WIDER_MIDDLE_SMALL"] = "wider-middle-small";
13
+ CurveType["WIDER_MIDDLE_MEDIUM"] = "wider-middle-medium";
14
+ CurveType["WIDER_MIDDLE_LARGE"] = "wider-middle-large";
15
+ CurveType["CIE_DAYLIGHT"] = "cie-daylight";
16
+ CurveType["SUN_ALTITUDE"] = "sun-altitude";
17
+ CurveType["PEREZ_DAYLIGHT"] = "perez-daylight";
18
+ })(CurveType || (exports.CurveType = CurveType = {}));
19
+ function parseCurveType(curve) {
20
+ const normalizedCurve = curve.toLowerCase();
21
+ if (normalizedCurve === 'hann') {
22
+ return 'HANN';
23
+ }
24
+ else if (normalizedCurve === 'wider-middle-small') {
25
+ return 'WIDER_MIDDLE_SMALL';
26
+ }
27
+ else if (normalizedCurve === 'wider-middle-medium') {
28
+ return 'WIDER_MIDDLE_MEDIUM';
29
+ }
30
+ else if (normalizedCurve === 'wider-middle-large') {
31
+ return 'WIDER_MIDDLE_LARGE';
32
+ }
33
+ else if (normalizedCurve === 'wider-middle') {
34
+ return 'WIDER_MIDDLE_MEDIUM'; // Default to medium for backwards compatibility
35
+ }
36
+ else if (normalizedCurve === 'cie-daylight') {
37
+ return 'CIE_DAYLIGHT';
38
+ }
39
+ else if (normalizedCurve === 'sun-altitude') {
40
+ return 'SUN_ALTITUDE';
41
+ }
42
+ else if (normalizedCurve === 'perez-daylight') {
43
+ return 'PEREZ_DAYLIGHT';
44
+ }
45
+ else {
46
+ throw new Error('Invalid curve type. Use "hann", "wider-middle-small", "wider-middle-medium", "wider-middle-large", "cie-daylight", "sun-altitude", or "perez-daylight"');
47
+ }
48
+ }
49
+ function getAvailableCurves() {
50
+ return Object.values(CurveType);
51
+ }
52
+ const CURVE_FUNCTIONS = {
53
+ [CurveType.HANN]: hannCurve,
54
+ [CurveType.WIDER_MIDDLE_SMALL]: (x) => widerMiddleCurve(x, 'small'),
55
+ [CurveType.WIDER_MIDDLE_MEDIUM]: (x) => widerMiddleCurve(x, 'medium'),
56
+ [CurveType.WIDER_MIDDLE_LARGE]: (x) => widerMiddleCurve(x, 'large'),
57
+ [CurveType.CIE_DAYLIGHT]: cieDaylightCurve,
58
+ [CurveType.SUN_ALTITUDE]: sunAltitudeCurve,
59
+ [CurveType.PEREZ_DAYLIGHT]: perezDaylightCurve,
10
60
  };
11
- /**
12
- * Calculate CCT (correlated color temperature) and intensity based on sunrise/sunset for a location and time.
13
- * Requirements:
14
- * - Outside sunrise/sunset window: return 2000K at 5% intensity (warmest min, dimmest)
15
- * - Within sunrise→sunset: follow a smooth bell-shaped curve that is 2000K/5% at both ends
16
- * and peaks at 6500K/100% at solar noon (the middle)
17
- *
18
- * Note: Intensity is returned in 0-1000 range (Amaran API format), where 50 = 5%, 1000 = 100%.
19
- * You can override the min/max CCT and intensity (percent) via the options parameter.
20
- */
21
- function calculateCCT(lat, lon, date = new Date(), opts) {
22
- const clamp = (v, lo, hi) => Math.min(hi, Math.max(lo, v));
23
- const cctMinK = clamp(opts?.cctMinK ?? _CCT_DEFAULTS.cctMinK, 1000, 20000);
24
- const cctMaxK = clamp(opts?.cctMaxK ?? _CCT_DEFAULTS.cctMaxK, 1000, 20000);
25
- const loK = Math.min(cctMinK, cctMaxK);
26
- const hiK = Math.max(cctMinK, cctMaxK);
27
- const intensityMinPct = clamp(opts?.intensityMinPct ?? _CCT_DEFAULTS.intensityMinPct, 0, 100);
28
- const intensityMaxPct = clamp(opts?.intensityMaxPct ?? _CCT_DEFAULTS.intensityMaxPct, 0, 100);
29
- const loPct = Math.min(intensityMinPct, intensityMaxPct);
30
- const hiPct = Math.max(intensityMinPct, intensityMaxPct);
31
- const MIN_K = loK;
32
- const MAX_K = hiK;
33
- const MIN_INTENSITY = Math.round(loPct * 10); // API expects 0-1000 range
34
- const MAX_INTENSITY = Math.round(hiPct * 10); // API expects 0-1000 range
35
- // Compute sun times for the given date and location
36
- let sunrise;
37
- let sunset;
38
- let _solarNoon;
39
- try {
40
- const times = (0, suncalc_1.getTimes)(date, lat, lon);
41
- sunrise = times.sunrise;
42
- sunset = times.sunset;
43
- _solarNoon = times.solarNoon;
44
- }
45
- catch (_) {
46
- // If suncalc fails, fall back to altitude-based heuristic below
47
- }
48
- // Helper: Hann window curve over [0,1]: 0.5 * (1 - cos(2πx))
49
- const hann = (x) => 0.5 * (1 - Math.cos(2 * Math.PI * x));
50
- // If we have valid sunrise/sunset for the day and a positive day length, use the windowed curve
51
- if (sunrise instanceof Date &&
61
+ function hannCurve(x) {
62
+ return 0.5 * (1 - Math.cos(2 * Math.PI * x));
63
+ }
64
+ function widerMiddleCurve(x, width = 'medium') {
65
+ const widthConfig = {
66
+ small: { start: 0.35, end: 0.65 }, // Narrow plateau (30% of day)
67
+ medium: { start: 0.2, end: 0.8 }, // Medium plateau (60% of day)
68
+ large: { start: 0.1, end: 0.9 }, // Wide plateau (80% of day)
69
+ };
70
+ const { start: plateauStart, end: plateauEnd } = widthConfig[width];
71
+ if (x < plateauStart) {
72
+ return Math.sin(((x / plateauStart) * Math.PI) / 2);
73
+ }
74
+ else if (x > plateauEnd) {
75
+ return Math.cos((((x - plateauEnd) / (1 - plateauEnd)) * Math.PI) / 2);
76
+ }
77
+ else {
78
+ return 1;
79
+ }
80
+ }
81
+ // Scientifically-based daylight curves using suncalc data
82
+ // Realistic daylight calculation functions
83
+ function calculateRealisticSunAltitude(altitude, maxAltitude) {
84
+ // Convert altitude to degrees for easier calculations
85
+ const altitudeDeg = (altitude * 180) / Math.PI;
86
+ const maxAltitudeDeg = (maxAltitude * 180) / Math.PI;
87
+ // CCT: Based on real-world color temperature at different sun angles
88
+ // Civil twilight (-6° to 0°): 4000-5000K
89
+ // Sunrise to 30°: 5000-6500K
90
+ // 30° to 60°: 5500-7000K
91
+ // Above 60°: 6500-7500K
92
+ let cctFactor;
93
+ if (altitudeDeg < -6) {
94
+ cctFactor = 0; // Before civil twilight - minimum CCT
95
+ }
96
+ else if (altitudeDeg < 0) {
97
+ // Civil twilight: 4000-5000K range
98
+ cctFactor = 0.3 + ((altitudeDeg + 6) / 6) * 0.2; // 0.3 to 0.5
99
+ }
100
+ else if (altitudeDeg < 30) {
101
+ // Morning/afternoon: 5000-6500K
102
+ cctFactor = 0.5 + (altitudeDeg / 30) * 0.3; // 0.5 to 0.8
103
+ }
104
+ else if (altitudeDeg < 60) {
105
+ // High sun: 5500-7000K
106
+ cctFactor = 0.8 + ((altitudeDeg - 30) / 30) * 0.2; // 0.8 to 1.0
107
+ }
108
+ else {
109
+ // Very high sun: 6500-7500K
110
+ cctFactor = 1.0;
111
+ }
112
+ // Intensity: Based on actual illuminance levels, scaled to 5-100% range
113
+ // Peak at 100% around noon, much steeper curve than CCT
114
+ let intensityFactor;
115
+ if (altitudeDeg < -6) {
116
+ intensityFactor = 0; // Dark - will become 5% minimum
117
+ }
118
+ else if (altitudeDeg < 0) {
119
+ // Civil twilight: very low but increasing rapidly
120
+ intensityFactor = ((altitudeDeg + 6) / 6) ** 2 * 0.05; // 0 to 0.05
121
+ }
122
+ else if (altitudeDeg < 10) {
123
+ // Just after sunrise: rapid increase
124
+ intensityFactor = 0.05 + (altitudeDeg / 10) * 0.15; // 0.05 to 0.20
125
+ }
126
+ else if (altitudeDeg < 30) {
127
+ // Morning: steady increase
128
+ intensityFactor = 0.2 + ((altitudeDeg - 10) / 20) * 0.4; // 0.20 to 0.60
129
+ }
130
+ else if (altitudeDeg < maxAltitudeDeg * 0.8) {
131
+ // Approach maximum - reach 100% by 80% of max altitude
132
+ intensityFactor = 0.6 + ((altitudeDeg - 30) / (maxAltitudeDeg * 0.8 - 30)) * 0.4; // 0.60 to 1.0
133
+ }
134
+ else {
135
+ // Maintain peak at maximum intensity
136
+ intensityFactor = 1.0;
137
+ }
138
+ return [Math.max(0, Math.min(1, cctFactor)), Math.max(0, Math.min(1, intensityFactor))];
139
+ }
140
+ function calculateRealisticCIEDaylight(altitude, maxAltitude) {
141
+ // CIE daylight with more realistic atmospheric modeling
142
+ const altitudeDeg = (altitude * 180) / Math.PI;
143
+ const maxAltitudeDeg = (maxAltitude * 180) / Math.PI;
144
+ // CCT: CIE standard illuminant D series with atmospheric scattering
145
+ let cctFactor;
146
+ if (altitudeDeg < -6) {
147
+ cctFactor = 0;
148
+ }
149
+ else if (altitudeDeg < 0) {
150
+ // Enhanced blue during civil twilight due to Rayleigh scattering
151
+ cctFactor = 0.4 + ((altitudeDeg + 6) / 6) ** 1.5 * 0.2; // 0.4 to 0.6
152
+ }
153
+ else if (altitudeDeg < 15) {
154
+ // Golden hour effect: warmer light
155
+ cctFactor = 0.6 - Math.sin((altitudeDeg * Math.PI) / 30) * 0.1; // Slight dip to 0.5
156
+ }
157
+ else if (altitudeDeg < 45) {
158
+ // Mid-morning: rapid blue increase
159
+ cctFactor = 0.5 + ((altitudeDeg - 15) / 30) * 0.4; // 0.5 to 0.9
160
+ }
161
+ else {
162
+ // High sun: maximum blue
163
+ cctFactor = 0.9 + Math.min(0.1, ((altitudeDeg - 45) / 45) * 0.1); // 0.9 to 1.0
164
+ }
165
+ // Intensity: CIE illuminance with atmospheric absorption, scaled to 5-100%
166
+ let intensityFactor;
167
+ if (altitudeDeg < -6) {
168
+ intensityFactor = 0; // Will become 5% minimum
169
+ }
170
+ else if (altitudeDeg < 0) {
171
+ intensityFactor = ((altitudeDeg + 6) / 6) ** 3 * 0.03; // Very low start
172
+ }
173
+ else if (altitudeDeg < 15) {
174
+ // Atmospheric path length effect - gradual start
175
+ const airMass = 1 / Math.sin(Math.max(0.01, (altitude * Math.PI) / 180));
176
+ intensityFactor = Math.min(0.25, 1 / airMass ** 0.7);
177
+ }
178
+ else if (altitudeDeg < Math.min(40, maxAltitudeDeg * 0.6)) {
179
+ // Mid-morning increase - use lower of 40° or 60% of max altitude
180
+ intensityFactor = 0.25 + ((altitudeDeg - 15) / (Math.min(40, maxAltitudeDeg * 0.6) - 15)) * 0.55; // 0.25 to 0.80
181
+ }
182
+ else if (altitudeDeg < maxAltitudeDeg * 0.8) {
183
+ // Approach peak - reach 100% by 80% of max altitude
184
+ intensityFactor =
185
+ 0.8 +
186
+ ((altitudeDeg - Math.min(40, maxAltitudeDeg * 0.6)) /
187
+ (maxAltitudeDeg * 0.8 - Math.min(40, maxAltitudeDeg * 0.6))) *
188
+ 0.2; // 0.80 to 1.0
189
+ }
190
+ else {
191
+ // Peak at solar noon
192
+ intensityFactor = 1.0;
193
+ }
194
+ return [Math.max(0, Math.min(1, cctFactor)), Math.max(0, Math.min(1, intensityFactor))];
195
+ }
196
+ function calculateRealisticPerezDaylight(altitude, maxAltitude) {
197
+ // Perez daylight model with turbidity and atmospheric effects
198
+ const altitudeDeg = (altitude * 180) / Math.PI;
199
+ const maxAltitudeDeg = (maxAltitude * 180) / Math.PI;
200
+ // CCT: Perez model with atmospheric turbidity
201
+ let cctFactor;
202
+ if (altitudeDeg < -6) {
203
+ cctFactor = 0;
204
+ }
205
+ else if (altitudeDeg < 0) {
206
+ // Strong blue during twilight (high turbidity effect)
207
+ cctFactor = 0.35 + ((altitudeDeg + 6) / 6) ** 2 * 0.25; // 0.35 to 0.6
208
+ }
209
+ else if (altitudeDeg < 25) {
210
+ // Warm golden hour with Perez atmospheric correction
211
+ const goldenHourEffect = Math.exp(-((altitudeDeg - 12.5) ** 2) / 100);
212
+ cctFactor = 0.6 - goldenHourEffect * 0.15 + (altitudeDeg / 25) * 0.3; // 0.45 to 0.75
213
+ }
214
+ else if (altitudeDeg < 50) {
215
+ // Transition to neutral white
216
+ cctFactor = 0.75 + ((altitudeDeg - 25) / 25) * 0.2; // 0.75 to 0.95
217
+ }
218
+ else {
219
+ // Slight cooling at very high angles
220
+ cctFactor = Math.min(1.0, 0.95 + ((altitudeDeg - 50) / 40) * 0.05); // 0.95 to 1.0
221
+ }
222
+ // Intensity: Perez all-weather model with cloud cover assumption, scaled to 5-100%
223
+ let intensityFactor;
224
+ if (altitudeDeg < -6) {
225
+ intensityFactor = 0; // Will become 5% minimum
226
+ }
227
+ else if (altitudeDeg < 5) {
228
+ // Very low light near horizon
229
+ intensityFactor = (Math.max(0, altitudeDeg + 6) / 11) ** 4 * 0.15;
230
+ }
231
+ else if (altitudeDeg < 20) {
232
+ // Morning increase with atmospheric effects
233
+ const zenithAngle = Math.max(0.01, ((90 - altitudeDeg) * Math.PI) / 180);
234
+ const relativeLuminance = Math.exp(-0.2 / Math.max(0.01, Math.cos(zenithAngle)));
235
+ intensityFactor = Math.min(0.4, relativeLuminance * 0.35 + 0.05);
236
+ }
237
+ else if (altitudeDeg < Math.min(45, maxAltitudeDeg * 0.7)) {
238
+ // Strong increase to midday - use lower of 45° or 70% of max altitude
239
+ intensityFactor = 0.4 + ((altitudeDeg - 20) / (Math.min(45, maxAltitudeDeg * 0.7) - 20)) * 0.5; // 0.40 to 0.90
240
+ }
241
+ else if (altitudeDeg < maxAltitudeDeg * 0.8) {
242
+ // Peak at solar noon - reach 100% by 80% of max altitude
243
+ intensityFactor =
244
+ 0.9 +
245
+ ((altitudeDeg - Math.min(45, maxAltitudeDeg * 0.7)) /
246
+ (maxAltitudeDeg * 0.8 - Math.min(45, maxAltitudeDeg * 0.7))) *
247
+ 0.1; // 0.90 to 1.0
248
+ }
249
+ else {
250
+ // Maintain peak at noon
251
+ intensityFactor = 1.0;
252
+ }
253
+ return [Math.max(0, Math.min(1, cctFactor)), Math.max(0, Math.min(1, intensityFactor))];
254
+ }
255
+ function cieDaylightCurve(x) {
256
+ // CIE daylight locus approximation
257
+ // Maps time of day to CCT based on CIE standard illuminant D series
258
+ // Higher CCT (bluer) at midday, lower CCT (warmer) at sunrise/sunset
259
+ return Math.sin(Math.PI * x) ** 0.8;
260
+ }
261
+ function sunAltitudeCurve(x) {
262
+ // Simple sun altitude-based approximation
263
+ // CCT ≈ 2000 + 4500 × (1 - cos(altitude))
264
+ // This creates a more gradual transition than simple sine
265
+ return 1 - Math.cos(Math.PI * x);
266
+ }
267
+ function perezDaylightCurve(x) {
268
+ // Perez daylight model approximation
269
+ // Accounts for atmospheric scattering and turbidity
270
+ // More realistic transition with slightly flatter midday peak
271
+ const zenithAngle = Math.PI * (0.5 - Math.abs(x - 0.5));
272
+ const scattering = Math.exp(-2.0 * Math.max(0, Math.cos(zenithAngle)));
273
+ return Math.sin(Math.PI * x) ** 0.6 * (1 - 0.2 * scattering);
274
+ }
275
+ function isValidSunTimes(sunrise, sunset, solarNoon) {
276
+ return (sunrise instanceof Date &&
52
277
  !Number.isNaN(sunrise.getTime()) &&
53
278
  sunset instanceof Date &&
54
279
  !Number.isNaN(sunset.getTime()) &&
55
- sunset.getTime() > sunrise.getTime()) {
56
- const t = date.getTime();
57
- const start = sunrise.getTime();
58
- const end = sunset.getTime();
59
- if (t <= start || t >= end) {
60
- return { cct: MIN_K, intensity: MIN_INTENSITY };
280
+ solarNoon instanceof Date &&
281
+ !Number.isNaN(solarNoon.getTime()) &&
282
+ sunset.getTime() > sunrise.getTime() &&
283
+ solarNoon.getTime() > sunrise.getTime() &&
284
+ solarNoon.getTime() < sunset.getTime());
285
+ }
286
+ function calculateCCTCore(lat, lon, date, minK, maxK, minIntensity, maxIntensity, curveType) {
287
+ const curve = CURVE_FUNCTIONS[curveType];
288
+ const times = (0, suncalc_1.getTimes)(date, lat, lon);
289
+ const sunrise = times.sunrise;
290
+ const sunset = times.sunset;
291
+ const _solarNoon = times.solarNoon;
292
+ const nightEnd = times.nightEnd;
293
+ const night = times.night;
294
+ let f;
295
+ // Scientific curves (CIE, SUN_ALTITUDE, PEREZ) use altitude-based calculations
296
+ if (curveType === CurveType.CIE_DAYLIGHT ||
297
+ curveType === CurveType.SUN_ALTITUDE ||
298
+ curveType === CurveType.PEREZ_DAYLIGHT) {
299
+ f = 0; // Initialize f
300
+ if (isValidSunTimes(sunrise, sunset, _solarNoon)) {
301
+ const [t, _noon] = [date.getTime(), _solarNoon.getTime()];
302
+ // For scientific curves, handle cases where nightEnd/night might not be available
303
+ let nightEndTime;
304
+ let nightStartTime;
305
+ if (nightEnd instanceof Date &&
306
+ !Number.isNaN(nightEnd.getTime()) &&
307
+ night instanceof Date &&
308
+ !Number.isNaN(night.getTime())) {
309
+ // Normal case: both nightEnd and night are available
310
+ nightEndTime = nightEnd.getTime();
311
+ nightStartTime = night.getTime();
312
+ if (t <= nightEndTime || t >= nightStartTime) {
313
+ return { cct: minK, intensity: minIntensity };
314
+ }
315
+ }
316
+ else {
317
+ // Edge case: no proper night (e.g., summer in high latitudes)
318
+ // Use sunrise/sunset as boundaries for scientific curves
319
+ nightEndTime = sunrise.getTime() - 30 * 60 * 1000; // 30 min before sunrise
320
+ nightStartTime = sunset.getTime() + 30 * 60 * 1000; // 30 min after sunset
321
+ if (t <= nightEndTime || t >= nightStartTime) {
322
+ return { cct: minK, intensity: minIntensity };
323
+ }
324
+ }
325
+ const pos = (0, suncalc_1.getPosition)(date, lat, lon);
326
+ const altitude = pos.altitude;
327
+ // Get maximum altitude for normalization (at solar noon on this day)
328
+ const noonPos = (0, suncalc_1.getPosition)(_solarNoon, lat, lon);
329
+ const maxAltitude = noonPos.altitude;
330
+ if (curveType === CurveType.SUN_ALTITUDE) {
331
+ // Realistic sun altitude-based calculations
332
+ const [cctFactor, intensityFactor] = calculateRealisticSunAltitude(altitude, maxAltitude);
333
+ const cct = minK + (maxK - minK) * cctFactor;
334
+ const intensity = minIntensity + (maxIntensity - minIntensity) * intensityFactor;
335
+ return {
336
+ cct: Math.round(cct),
337
+ intensity: Math.round(intensity),
338
+ };
339
+ }
340
+ else if (curveType === CurveType.CIE_DAYLIGHT) {
341
+ // Realistic CIE daylight locus calculations
342
+ const [cctFactor, intensityFactor] = calculateRealisticCIEDaylight(altitude, maxAltitude);
343
+ const cct = minK + (maxK - minK) * cctFactor;
344
+ const intensity = minIntensity + (maxIntensity - minIntensity) * intensityFactor;
345
+ return {
346
+ cct: Math.round(cct),
347
+ intensity: Math.round(intensity),
348
+ };
349
+ }
350
+ else if (curveType === CurveType.PEREZ_DAYLIGHT) {
351
+ // Realistic Perez daylight model calculations
352
+ const [cctFactor, intensityFactor] = calculateRealisticPerezDaylight(altitude, maxAltitude);
353
+ const cct = minK + (maxK - minK) * cctFactor;
354
+ const intensity = minIntensity + (maxIntensity - minIntensity) * intensityFactor;
355
+ return {
356
+ cct: Math.round(cct),
357
+ intensity: Math.round(intensity),
358
+ };
359
+ }
360
+ }
361
+ else {
362
+ // Fallback for scientific curves when sun times are invalid
363
+ f = 0;
364
+ const cct = minK + (maxK - minK) * f;
365
+ const intensity = minIntensity + (maxIntensity - minIntensity) * f;
366
+ return {
367
+ cct: Math.round(cct),
368
+ intensity: Math.round(intensity),
369
+ };
370
+ }
371
+ }
372
+ // Empirical curves (HANN, WIDER_MIDDLE) use time-based calculations with nightEnd/night like scientific curves
373
+ if (isValidSunTimes(sunrise, sunset, _solarNoon) &&
374
+ nightEnd instanceof Date &&
375
+ !Number.isNaN(nightEnd.getTime()) &&
376
+ night instanceof Date &&
377
+ !Number.isNaN(night.getTime())) {
378
+ const [t, noon, nightStartTime, nightEndTime] = [
379
+ date.getTime(),
380
+ _solarNoon.getTime(),
381
+ night.getTime(),
382
+ nightEnd.getTime(),
383
+ ];
384
+ if (t <= nightEndTime || t >= nightStartTime) {
385
+ return { cct: minK, intensity: minIntensity };
61
386
  }
62
- // Normalize current time within [sunrise, sunset] to x in [0,1]
63
- const x = (t - start) / (end - start);
64
- // Bell-shaped curve, 0 at edges, 1 at middle (solar noon is ~ middle)
65
- const f = hann(x);
66
- const cct = MIN_K + (MAX_K - MIN_K) * f;
67
- const intensity = MIN_INTENSITY + (MAX_INTENSITY - MIN_INTENSITY) * f;
387
+ let x;
388
+ if (t <= noon) {
389
+ // Morning: map [nightEnd, solarNoon] to [0, 0.5]
390
+ x = ((t - nightEndTime) / (noon - nightEndTime)) * 0.5;
391
+ }
392
+ else {
393
+ // Afternoon: map [solarNoon, night] to [0.5, 1]
394
+ x = 0.5 + ((t - noon) / (nightStartTime - noon)) * 0.5;
395
+ }
396
+ f = curve(x);
397
+ const cct = minK + (maxK - minK) * f;
398
+ const intensity = minIntensity + (maxIntensity - minIntensity) * f;
68
399
  return {
69
400
  cct: Math.round(cct),
70
401
  intensity: Math.round(intensity),
71
402
  };
72
403
  }
73
- // Fallback: use solar altitude as a proxy (robust near polar regions or if times missing)
404
+ // Fallback for empirical curves when night times are not available
74
405
  try {
75
406
  const pos = (0, suncalc_1.getPosition)(date, lat, lon);
76
- const altitude = pos.altitude; // radians above horizon, <= 0 means below horizon
407
+ const altitude = pos.altitude;
77
408
  if (altitude <= 0)
78
- return { cct: MIN_K, intensity: MIN_INTENSITY };
79
- // Map altitude [0 .. π/2] to [0 .. 1] using sine for a bell-ish shape
80
- const f = Math.max(0, Math.sin(altitude));
81
- const cct = MIN_K + (MAX_K - MIN_K) * Math.min(1, f);
82
- const intensity = MIN_INTENSITY + (MAX_INTENSITY - MIN_INTENSITY) * Math.min(1, f);
409
+ return { cct: minK, intensity: minIntensity };
410
+ f = Math.max(0, Math.sin(altitude));
411
+ const cct = minK + (maxK - minK) * f;
412
+ const intensity = minIntensity + (maxIntensity - minIntensity) * f;
83
413
  return {
84
414
  cct: Math.round(cct),
85
415
  intensity: Math.round(intensity),
86
416
  };
87
417
  }
88
- catch (_) {
89
- // As a last resort, hold the minimum
90
- return { cct: MIN_K, intensity: MIN_INTENSITY };
418
+ catch (_error) {
419
+ return { cct: minK, intensity: minIntensity };
91
420
  }
92
421
  }
422
+ function calculateCCT(lat, lon, date = new Date(), opts, curveType = CurveType.HANN) {
423
+ const clamp = (v, lo, hi) => Math.min(hi, Math.max(lo, v));
424
+ const cctMinK = clamp(opts?.cctMinK ?? constants_1.CCT_DEFAULTS.cctMinK, 1000, 20000);
425
+ const cctMaxK = clamp(opts?.cctMaxK ?? constants_1.CCT_DEFAULTS.cctMaxK, 1000, 20000);
426
+ const minK = Math.min(cctMinK, cctMaxK);
427
+ const maxK = Math.max(cctMinK, cctMaxK);
428
+ const intensityMinPct = clamp(opts?.intensityMinPct ?? constants_1.CCT_DEFAULTS.intensityMinPct, 0, 100);
429
+ const intensityMaxPct = clamp(opts?.intensityMaxPct ?? constants_1.CCT_DEFAULTS.intensityMaxPct, 0, 100);
430
+ const minPct = Math.min(intensityMinPct, intensityMaxPct);
431
+ const maxPct = Math.max(intensityMinPct, intensityMaxPct);
432
+ const minIntensity = Math.round(minPct * 10);
433
+ const maxIntensity = Math.round(maxPct * 10);
434
+ return calculateCCTCore(lat, lon, date, minK, maxK, minIntensity, maxIntensity, curveType);
435
+ }
93
436
  //# sourceMappingURL=cctUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cctUtil.js","sourceRoot":"","sources":["../src/cctUtil.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cctUtil.js","sourceRoot":"","sources":["../src/cctUtil.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,eAAe,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,QAAA,MAAM,OAAO,SAAgB,CAAC;AAkD9B,iBAAe,gBAAgB,CAC7B,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,OAAO,GACd,OAAO,CAAC,eAAe,CAAC,CA+D1B;AAGD,iBAAS,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAClE,GAAG,MAAM,CAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CAMnC;AAGD,iBAAS,UAAU,CAAC,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBnF;AAmHD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,eAAe,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,QAAA,MAAM,OAAO,SAAgB,CAAC;AA4D9B,iBAAe,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CA2H5G;AAGD,iBAAS,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAClE,GAAG,MAAM,CAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CAMnC;AAGD,iBAAS,UAAU,CAAC,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBnF;AA8JD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC"}