amaran-light-cli 1.1.2 → 1.3.6
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.
- package/CHANGELOG.md +44 -5
- package/README.md +94 -70
- package/dist/__tests__/autoCct.test.js +89 -20
- package/dist/__tests__/autoCct.test.js.map +1 -1
- package/dist/__tests__/autostart.test.js +87 -41
- package/dist/__tests__/autostart.test.js.map +1 -1
- package/dist/__tests__/cctUtil.test.js +26 -27
- package/dist/__tests__/cctUtil.test.js.map +1 -1
- package/dist/__tests__/cli.smoke.test.js +18 -13
- package/dist/__tests__/cli.smoke.test.js.map +1 -1
- package/dist/__tests__/intensityApi.test.js +4 -9
- package/dist/__tests__/intensityApi.test.js.map +1 -1
- package/dist/__tests__/lightControl.test.js +79 -68
- package/dist/__tests__/lightControl.test.js.map +1 -1
- package/dist/__tests__/setupTests.js +9 -8
- package/dist/__tests__/setupTests.js.map +1 -1
- package/dist/__tests__/simulateSchedule.test.d.ts +2 -0
- package/dist/__tests__/simulateSchedule.test.d.ts.map +1 -0
- package/dist/__tests__/simulateSchedule.test.js +87 -0
- package/dist/__tests__/simulateSchedule.test.js.map +1 -0
- package/dist/autostart.js +19 -60
- package/dist/autostart.js.map +1 -1
- package/dist/cctUtil.d.ts.map +1 -1
- package/dist/cctUtil.js +16 -21
- package/dist/cctUtil.js.map +1 -1
- package/dist/cli.d.ts +2 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +52 -231
- package/dist/cli.js.map +1 -1
- package/dist/commands/__tests__/integration.test.d.ts +2 -0
- package/dist/commands/__tests__/integration.test.d.ts.map +1 -0
- package/dist/commands/__tests__/integration.test.js +279 -0
- package/dist/commands/__tests__/integration.test.js.map +1 -0
- package/dist/commands/autoCct.d.ts +1 -1
- package/dist/commands/autoCct.d.ts.map +1 -1
- package/dist/commands/autoCct.js +90 -76
- package/dist/commands/autoCct.js.map +1 -1
- package/dist/commands/cct.d.ts +1 -1
- package/dist/commands/cct.d.ts.map +1 -1
- package/dist/commands/cct.js +17 -23
- package/dist/commands/cct.js.map +1 -1
- package/dist/commands/color.d.ts +1 -1
- package/dist/commands/color.d.ts.map +1 -1
- package/dist/commands/color.js +9 -15
- package/dist/commands/color.js.map +1 -1
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +219 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/discover.d.ts +1 -1
- package/dist/commands/discover.d.ts.map +1 -1
- package/dist/commands/discover.js +8 -14
- package/dist/commands/discover.js.map +1 -1
- package/dist/commands/hsi.d.ts +1 -1
- package/dist/commands/hsi.d.ts.map +1 -1
- package/dist/commands/hsi.js +11 -17
- package/dist/commands/hsi.js.map +1 -1
- package/dist/commands/intensity.d.ts +1 -1
- package/dist/commands/intensity.d.ts.map +1 -1
- package/dist/commands/intensity.js +9 -15
- package/dist/commands/intensity.js.map +1 -1
- package/dist/commands/list.d.ts +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +6 -12
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/power.d.ts +1 -1
- package/dist/commands/power.d.ts.map +1 -1
- package/dist/commands/power.js +18 -24
- package/dist/commands/power.js.map +1 -1
- package/dist/commands/printSchedule.d.ts +5 -0
- package/dist/commands/printSchedule.d.ts.map +1 -0
- package/dist/commands/{schedule.js → printSchedule.js} +92 -84
- package/dist/commands/printSchedule.js.map +1 -0
- package/dist/commands/service.d.ts +1 -1
- package/dist/commands/service.d.ts.map +1 -1
- package/dist/commands/service.js +54 -88
- package/dist/commands/service.js.map +1 -1
- package/dist/commands/simulateSchedule.d.ts +1 -1
- package/dist/commands/simulateSchedule.d.ts.map +1 -1
- package/dist/commands/simulateSchedule.js +50 -70
- package/dist/commands/simulateSchedule.js.map +1 -1
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +8 -14
- package/dist/commands/status.js.map +1 -1
- package/dist/commands.d.ts +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +56 -33
- package/dist/commands.js.map +1 -1
- package/dist/constants.d.ts +13 -14
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +21 -27
- package/dist/constants.js.map +1 -1
- package/dist/discovery.js +8 -15
- package/dist/discovery.js.map +1 -1
- package/dist/geoipUtil.js +3 -9
- package/dist/geoipUtil.js.map +1 -1
- package/dist/lightControl.js +18 -20
- package/dist/lightControl.js.map +1 -1
- package/dist/test/MockLightServer.d.ts +13 -0
- package/dist/test/MockLightServer.d.ts.map +1 -0
- package/dist/test/MockLightServer.js +140 -0
- package/dist/test/MockLightServer.js.map +1 -0
- package/dist/types.d.ts +4 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -2
- package/package.json +16 -15
- package/scripts/release.js +112 -0
- package/scripts/test.sh +2 -5
- package/dist/commands/schedule.d.ts +0 -5
- package/dist/commands/schedule.d.ts.map +0 -1
- package/dist/commands/schedule.js.map +0 -1
|
@@ -1,84 +1,116 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { exec } from 'node:child_process';
|
|
2
|
+
import * as fs from 'node:fs';
|
|
3
|
+
import { vi } from 'vitest';
|
|
4
|
+
import { handleAutostart, isAmaranAppRunning, startAmaranApp } from '../autostart.js';
|
|
4
5
|
// Mock the child_process module
|
|
5
|
-
|
|
6
|
-
promisify:
|
|
6
|
+
vi.mock('node:util', () => ({
|
|
7
|
+
promisify: vi.fn((fn) => fn),
|
|
7
8
|
}));
|
|
8
|
-
|
|
9
|
-
exec:
|
|
9
|
+
vi.mock('node:child_process', () => ({
|
|
10
|
+
exec: vi.fn(),
|
|
10
11
|
}));
|
|
11
|
-
|
|
12
|
-
existsSync:
|
|
13
|
-
readFileSync:
|
|
14
|
-
writeFileSync:
|
|
15
|
-
appendFileSync:
|
|
16
|
-
}));
|
|
17
|
-
jest.mock('chalk', () => ({
|
|
18
|
-
yellow: jest.fn((text) => text),
|
|
19
|
-
green: jest.fn((text) => text),
|
|
20
|
-
gray: jest.fn((text) => text),
|
|
21
|
-
red: jest.fn((text) => text),
|
|
22
|
-
blue: jest.fn((text) => text),
|
|
12
|
+
vi.mock('node:fs', () => ({
|
|
13
|
+
existsSync: vi.fn(),
|
|
14
|
+
readFileSync: vi.fn(),
|
|
15
|
+
writeFileSync: vi.fn(),
|
|
16
|
+
appendFileSync: vi.fn(),
|
|
23
17
|
}));
|
|
18
|
+
vi.mock('chalk', () => {
|
|
19
|
+
const mocks = {
|
|
20
|
+
yellow: vi.fn((text) => text),
|
|
21
|
+
green: vi.fn((text) => text),
|
|
22
|
+
gray: vi.fn((text) => text),
|
|
23
|
+
red: vi.fn((text) => text),
|
|
24
|
+
blue: vi.fn((text) => text),
|
|
25
|
+
};
|
|
26
|
+
return { default: mocks };
|
|
27
|
+
});
|
|
24
28
|
describe('autostart', () => {
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
// The imported 'exec' and 'fs' are already the mocked versions due to vi.mock calls.
|
|
30
|
+
// We use vi.mocked() to get the typed mock objects.
|
|
31
|
+
const mockExec = vi.mocked(exec);
|
|
32
|
+
const mockFs = vi.mocked(fs);
|
|
27
33
|
beforeEach(() => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
vi.useFakeTimers();
|
|
35
|
+
vi.clearAllMocks();
|
|
36
|
+
vi.spyOn(console, 'log').mockImplementation(() => {
|
|
37
|
+
// no-op
|
|
38
|
+
});
|
|
39
|
+
vi.spyOn(console, 'warn').mockImplementation(() => {
|
|
40
|
+
// no-op
|
|
41
|
+
});
|
|
31
42
|
});
|
|
32
43
|
afterEach(() => {
|
|
33
|
-
|
|
44
|
+
vi.useRealTimers();
|
|
45
|
+
vi.restoreAllMocks();
|
|
34
46
|
});
|
|
35
47
|
describe('isAmaranAppRunning', () => {
|
|
36
48
|
it('should return true when amaran process is found', async () => {
|
|
37
|
-
|
|
49
|
+
// biome-ignore lint/suspicious/noExplicitAny: mocking overloaded function
|
|
50
|
+
mockExec.mockImplementation((_command, ...args) => {
|
|
51
|
+
const callback = args.find((arg) => typeof arg === 'function');
|
|
38
52
|
callback(null, 'amaran Desktop 12345 0.0 0.1 123456 1234 ?? 10:30AM 0:00.01 /Applications/amaran Desktop.app/Contents/MacOS/amaran Desktop', '');
|
|
53
|
+
// biome-ignore lint/suspicious/noExplicitAny: mock return
|
|
54
|
+
return {};
|
|
39
55
|
});
|
|
40
|
-
const result = await
|
|
56
|
+
const result = await isAmaranAppRunning(true);
|
|
41
57
|
expect(result).toBe(true);
|
|
42
58
|
expect(mockExec).toHaveBeenCalledWith('ps aux | grep -i "amaran desktop" | grep -v grep', expect.any(Function));
|
|
43
59
|
});
|
|
44
60
|
it('should return false when no amaran process is found', async () => {
|
|
45
|
-
|
|
61
|
+
// biome-ignore lint/suspicious/noExplicitAny: mocking overloaded function
|
|
62
|
+
mockExec.mockImplementation((_command, ...args) => {
|
|
63
|
+
const callback = args.find((arg) => typeof arg === 'function');
|
|
46
64
|
callback(null, '', '');
|
|
65
|
+
// biome-ignore lint/suspicious/noExplicitAny: mock return
|
|
66
|
+
return {};
|
|
47
67
|
});
|
|
48
|
-
const result = await
|
|
68
|
+
const result = await isAmaranAppRunning(true);
|
|
49
69
|
expect(result).toBe(false);
|
|
50
70
|
});
|
|
51
71
|
it('should return false when exec fails', async () => {
|
|
52
|
-
|
|
72
|
+
// biome-ignore lint/suspicious/noExplicitAny: mocking overloaded function
|
|
73
|
+
mockExec.mockImplementation((_command, ...args) => {
|
|
74
|
+
const callback = args.find((arg) => typeof arg === 'function');
|
|
53
75
|
callback(new Error('Command failed'), '', '');
|
|
76
|
+
// biome-ignore lint/suspicious/noExplicitAny: mock return
|
|
77
|
+
return {};
|
|
54
78
|
});
|
|
55
|
-
const result = await
|
|
79
|
+
const result = await isAmaranAppRunning(true);
|
|
56
80
|
expect(result).toBe(false);
|
|
57
81
|
});
|
|
58
82
|
});
|
|
59
83
|
describe('startAmaranApp', () => {
|
|
60
84
|
it('should start app successfully when autostart is enabled', async () => {
|
|
61
|
-
|
|
85
|
+
// biome-ignore lint/suspicious/noExplicitAny: mocking overloaded function
|
|
86
|
+
mockExec.mockImplementation((command, ...args) => {
|
|
87
|
+
const callback = args.find((arg) => typeof arg === 'function');
|
|
62
88
|
if (command.includes('open -a "amaran Desktop"')) {
|
|
63
89
|
callback(null, '', '');
|
|
64
90
|
}
|
|
91
|
+
// biome-ignore lint/suspicious/noExplicitAny: mock return
|
|
92
|
+
return {};
|
|
65
93
|
});
|
|
66
94
|
mockFs.existsSync.mockReturnValue(true);
|
|
67
95
|
mockFs.readFileSync.mockReturnValue(JSON.stringify({ autoStartApp: true }));
|
|
68
|
-
const
|
|
96
|
+
const promise = startAmaranApp(true);
|
|
97
|
+
await vi.runAllTimersAsync();
|
|
98
|
+
const result = await promise;
|
|
69
99
|
expect(result).toBe(true);
|
|
70
100
|
expect(mockExec).toHaveBeenCalledWith('open -a "amaran Desktop" 2>/dev/null', expect.any(Function));
|
|
71
101
|
});
|
|
72
102
|
it('should not start app when autostart is disabled', async () => {
|
|
73
103
|
mockFs.existsSync.mockReturnValue(true);
|
|
74
104
|
mockFs.readFileSync.mockReturnValue(JSON.stringify({ autoStartApp: false }));
|
|
75
|
-
const result = await
|
|
105
|
+
const result = await startAmaranApp(true);
|
|
76
106
|
expect(result).toBe(false);
|
|
77
107
|
expect(mockExec).not.toHaveBeenCalled();
|
|
78
108
|
});
|
|
79
109
|
it('should try multiple start methods', async () => {
|
|
80
110
|
let callCount = 0;
|
|
81
|
-
|
|
111
|
+
// biome-ignore lint/suspicious/noExplicitAny: mocking overloaded function
|
|
112
|
+
mockExec.mockImplementation((_command, ...args) => {
|
|
113
|
+
const callback = args.find((arg) => typeof arg === 'function');
|
|
82
114
|
callCount++;
|
|
83
115
|
if (callCount < 3) {
|
|
84
116
|
callback(new Error('Command not found'), '', '');
|
|
@@ -86,10 +118,14 @@ describe('autostart', () => {
|
|
|
86
118
|
else {
|
|
87
119
|
callback(null, '', '');
|
|
88
120
|
}
|
|
121
|
+
// biome-ignore lint/suspicious/noExplicitAny: mock return
|
|
122
|
+
return {};
|
|
89
123
|
});
|
|
90
124
|
mockFs.existsSync.mockReturnValue(true);
|
|
91
125
|
mockFs.readFileSync.mockReturnValue(JSON.stringify({}));
|
|
92
|
-
const
|
|
126
|
+
const promise = startAmaranApp(true);
|
|
127
|
+
await vi.runAllTimersAsync();
|
|
128
|
+
const result = await promise;
|
|
93
129
|
expect(result).toBe(true);
|
|
94
130
|
expect(mockExec).toHaveBeenCalledTimes(3);
|
|
95
131
|
});
|
|
@@ -98,32 +134,42 @@ describe('autostart', () => {
|
|
|
98
134
|
it('should return false when autostart is disabled', async () => {
|
|
99
135
|
mockFs.existsSync.mockReturnValue(true);
|
|
100
136
|
mockFs.readFileSync.mockReturnValue(JSON.stringify({ autoStartApp: false }));
|
|
101
|
-
const result = await
|
|
137
|
+
const result = await handleAutostart(true);
|
|
102
138
|
expect(result).toBe(false);
|
|
103
139
|
});
|
|
104
140
|
it('should return true when app is already running', async () => {
|
|
105
|
-
|
|
141
|
+
// biome-ignore lint/suspicious/noExplicitAny: mocking overloaded function
|
|
142
|
+
mockExec.mockImplementation((command, ...args) => {
|
|
143
|
+
const callback = args.find((arg) => typeof arg === 'function');
|
|
106
144
|
if (command.includes('ps aux')) {
|
|
107
145
|
callback(null, 'amaran Desktop 12345 0.0 0.1 123456 1234 ?? 10:30AM 0:00.01 /Applications/amaran Desktop.app/Contents/MacOS/amaran Desktop', '');
|
|
108
146
|
}
|
|
147
|
+
// biome-ignore lint/suspicious/noExplicitAny: mock return
|
|
148
|
+
return {};
|
|
109
149
|
});
|
|
110
150
|
mockFs.existsSync.mockReturnValue(true);
|
|
111
151
|
mockFs.readFileSync.mockReturnValue(JSON.stringify({}));
|
|
112
|
-
const result = await
|
|
152
|
+
const result = await handleAutostart(true);
|
|
113
153
|
expect(result).toBe(true);
|
|
114
154
|
});
|
|
115
155
|
it('should attempt to start app when not running', async () => {
|
|
116
|
-
|
|
156
|
+
// biome-ignore lint/suspicious/noExplicitAny: mocking overloaded function
|
|
157
|
+
mockExec.mockImplementation((command, ...args) => {
|
|
158
|
+
const callback = args.find((arg) => typeof arg === 'function');
|
|
117
159
|
if (command.includes('ps aux')) {
|
|
118
160
|
callback(null, '', '');
|
|
119
161
|
}
|
|
120
162
|
else if (command.includes('open -a "amaran Desktop"')) {
|
|
121
163
|
callback(null, '', '');
|
|
122
164
|
}
|
|
165
|
+
// biome-ignore lint/suspicious/noExplicitAny: mock return
|
|
166
|
+
return {};
|
|
123
167
|
});
|
|
124
168
|
mockFs.existsSync.mockReturnValue(true);
|
|
125
169
|
mockFs.readFileSync.mockReturnValue(JSON.stringify({}));
|
|
126
|
-
const
|
|
170
|
+
const promise = handleAutostart(true);
|
|
171
|
+
await vi.runAllTimersAsync();
|
|
172
|
+
const result = await promise;
|
|
127
173
|
expect(result).toBe(true);
|
|
128
174
|
});
|
|
129
175
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autostart.test.js","sourceRoot":"","sources":["../../src/__tests__/autostart.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"autostart.test.js","sourceRoot":"","sources":["../../src/__tests__/autostart.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const constants_1 = require("../constants");
|
|
1
|
+
import SunCalc from 'suncalc';
|
|
2
|
+
const { getTimes } = SunCalc;
|
|
3
|
+
import { calculateCCT } from '../cctUtil.js';
|
|
4
|
+
import { CCT_DEFAULTS } from '../constants.js';
|
|
6
5
|
describe('calculateCCT', () => {
|
|
7
6
|
const NYC_LAT = 40.7128;
|
|
8
7
|
const NYC_LON = -74.006;
|
|
9
8
|
// Use the actual defaults from the module for all tests
|
|
10
|
-
const MIN_INTENSITY_PCT =
|
|
11
|
-
const MAX_INTENSITY_PCT =
|
|
12
|
-
const MIN_CCT =
|
|
13
|
-
const MAX_CCT =
|
|
9
|
+
const MIN_INTENSITY_PCT = CCT_DEFAULTS.intensityMinPct;
|
|
10
|
+
const MAX_INTENSITY_PCT = CCT_DEFAULTS.intensityMaxPct;
|
|
11
|
+
const MIN_CCT = CCT_DEFAULTS.cctMinK;
|
|
12
|
+
const MAX_CCT = CCT_DEFAULTS.cctMaxK;
|
|
14
13
|
const MIN_INTENSITY_API = MIN_INTENSITY_PCT * 10; // API format (50)
|
|
15
14
|
const MAX_INTENSITY_API = MAX_INTENSITY_PCT * 10; // API format (1000)
|
|
16
15
|
describe('NYC circadian lighting tests', () => {
|
|
@@ -23,7 +22,7 @@ describe('calculateCCT', () => {
|
|
|
23
22
|
beforeAll(() => {
|
|
24
23
|
// Use a fixed date for consistent test results
|
|
25
24
|
testDate = new Date('2024-06-21T12:00:00Z'); // Summer solstice
|
|
26
|
-
const times =
|
|
25
|
+
const times = getTimes(testDate, NYC_LAT, NYC_LON);
|
|
27
26
|
_sunrise = times.sunrise;
|
|
28
27
|
sunset = times.sunset;
|
|
29
28
|
solarNoon = times.solarNoon;
|
|
@@ -31,8 +30,8 @@ describe('calculateCCT', () => {
|
|
|
31
30
|
night = times.night;
|
|
32
31
|
});
|
|
33
32
|
it('should return minimum CCT and intensity before nightEnd', () => {
|
|
34
|
-
const beforeNightEnd = new Date(nightEnd.getTime() -
|
|
35
|
-
const result =
|
|
33
|
+
const beforeNightEnd = new Date(nightEnd.getTime() - 60_000); // 1 minute before
|
|
34
|
+
const result = calculateCCT(NYC_LAT, NYC_LON, beforeNightEnd, {
|
|
36
35
|
intensityMinPct: MIN_INTENSITY_PCT,
|
|
37
36
|
intensityMaxPct: MAX_INTENSITY_PCT,
|
|
38
37
|
cctMinK: MIN_CCT,
|
|
@@ -43,7 +42,7 @@ describe('calculateCCT', () => {
|
|
|
43
42
|
});
|
|
44
43
|
it('should return minimum CCT and intensity at nightEnd edge', () => {
|
|
45
44
|
const atNightEnd = new Date(nightEnd.getTime());
|
|
46
|
-
const result =
|
|
45
|
+
const result = calculateCCT(NYC_LAT, NYC_LON, atNightEnd, {
|
|
47
46
|
intensityMinPct: MIN_INTENSITY_PCT,
|
|
48
47
|
intensityMaxPct: MAX_INTENSITY_PCT,
|
|
49
48
|
cctMinK: MIN_CCT,
|
|
@@ -55,7 +54,7 @@ describe('calculateCCT', () => {
|
|
|
55
54
|
});
|
|
56
55
|
it('should return maximum CCT and intensity at solar noon', () => {
|
|
57
56
|
const atNoon = new Date(solarNoon.getTime());
|
|
58
|
-
const result =
|
|
57
|
+
const result = calculateCCT(NYC_LAT, NYC_LON, atNoon, {
|
|
59
58
|
intensityMinPct: MIN_INTENSITY_PCT,
|
|
60
59
|
intensityMaxPct: MAX_INTENSITY_PCT,
|
|
61
60
|
cctMinK: MIN_CCT,
|
|
@@ -67,7 +66,7 @@ describe('calculateCCT', () => {
|
|
|
67
66
|
});
|
|
68
67
|
it('should return minimum CCT and intensity at night edge', () => {
|
|
69
68
|
const atNight = new Date(night.getTime());
|
|
70
|
-
const result =
|
|
69
|
+
const result = calculateCCT(NYC_LAT, NYC_LON, atNight, {
|
|
71
70
|
intensityMinPct: MIN_INTENSITY_PCT,
|
|
72
71
|
intensityMaxPct: MAX_INTENSITY_PCT,
|
|
73
72
|
cctMinK: MIN_CCT,
|
|
@@ -78,8 +77,8 @@ describe('calculateCCT', () => {
|
|
|
78
77
|
expect(result.intensity).toBe(MIN_INTENSITY_API);
|
|
79
78
|
});
|
|
80
79
|
it('should return minimum CCT and intensity after night', () => {
|
|
81
|
-
const afterNight = new Date(night.getTime() +
|
|
82
|
-
const result =
|
|
80
|
+
const afterNight = new Date(night.getTime() + 60_000); // 1 minute after
|
|
81
|
+
const result = calculateCCT(NYC_LAT, NYC_LON, afterNight, {
|
|
83
82
|
intensityMinPct: MIN_INTENSITY_PCT,
|
|
84
83
|
intensityMaxPct: MAX_INTENSITY_PCT,
|
|
85
84
|
cctMinK: MIN_CCT,
|
|
@@ -90,7 +89,7 @@ describe('calculateCCT', () => {
|
|
|
90
89
|
});
|
|
91
90
|
it('should have smooth progression from nightEnd to noon', () => {
|
|
92
91
|
const quarterWay = new Date(nightEnd.getTime() + (solarNoon.getTime() - nightEnd.getTime()) / 4);
|
|
93
|
-
const result =
|
|
92
|
+
const result = calculateCCT(NYC_LAT, NYC_LON, quarterWay, {
|
|
94
93
|
intensityMinPct: MIN_INTENSITY_PCT,
|
|
95
94
|
intensityMaxPct: MAX_INTENSITY_PCT,
|
|
96
95
|
cctMinK: MIN_CCT,
|
|
@@ -104,7 +103,7 @@ describe('calculateCCT', () => {
|
|
|
104
103
|
});
|
|
105
104
|
it('should have smooth progression from noon to sunset', () => {
|
|
106
105
|
const threeQuartersWay = new Date(solarNoon.getTime() + (sunset.getTime() - solarNoon.getTime()) / 2);
|
|
107
|
-
const result =
|
|
106
|
+
const result = calculateCCT(NYC_LAT, NYC_LON, threeQuartersWay, {
|
|
108
107
|
intensityMinPct: MIN_INTENSITY_PCT,
|
|
109
108
|
intensityMaxPct: MAX_INTENSITY_PCT,
|
|
110
109
|
cctMinK: MIN_CCT,
|
|
@@ -120,7 +119,7 @@ describe('calculateCCT', () => {
|
|
|
120
119
|
describe('Edge cases', () => {
|
|
121
120
|
it('should handle midnight times', () => {
|
|
122
121
|
const midnight = new Date('2024-06-21T04:00:00Z'); // Midnight in NYC
|
|
123
|
-
const result =
|
|
122
|
+
const result = calculateCCT(NYC_LAT, NYC_LON, midnight);
|
|
124
123
|
expect(result.cct).toBe(MIN_CCT);
|
|
125
124
|
expect(result.intensity).toBe(MIN_INTENSITY_API);
|
|
126
125
|
});
|
|
@@ -128,21 +127,21 @@ describe('calculateCCT', () => {
|
|
|
128
127
|
const LONDON_LAT = 51.5074;
|
|
129
128
|
const LONDON_LON = -0.1278;
|
|
130
129
|
const testDate = new Date('2024-06-21T12:00:00Z');
|
|
131
|
-
const result =
|
|
130
|
+
const result = calculateCCT(LONDON_LAT, LONDON_LON, testDate);
|
|
132
131
|
expect(result.cct).toBeGreaterThanOrEqual(MIN_CCT);
|
|
133
132
|
expect(result.cct).toBeLessThanOrEqual(MAX_CCT);
|
|
134
133
|
expect(result.intensity).toBeGreaterThanOrEqual(MIN_INTENSITY_API); // 5% minimum
|
|
135
134
|
expect(result.intensity).toBeLessThanOrEqual(MAX_INTENSITY_API);
|
|
136
135
|
});
|
|
137
136
|
it('should use default options when none provided', () => {
|
|
138
|
-
const result =
|
|
137
|
+
const result = calculateCCT(NYC_LAT, NYC_LON, new Date('2024-06-21T12:00:00Z'));
|
|
139
138
|
expect(result.cct).toBeGreaterThanOrEqual(MIN_CCT);
|
|
140
139
|
expect(result.cct).toBeLessThanOrEqual(MAX_CCT);
|
|
141
140
|
expect(result.intensity).toBeGreaterThanOrEqual(MIN_INTENSITY_API); // 5% minimum
|
|
142
141
|
expect(result.intensity).toBeLessThanOrEqual(MAX_INTENSITY_API);
|
|
143
142
|
});
|
|
144
143
|
it('should use default date if not provided', () => {
|
|
145
|
-
const result =
|
|
144
|
+
const result = calculateCCT(NYC_LAT, NYC_LON);
|
|
146
145
|
expect(result.cct).toBeGreaterThanOrEqual(MIN_CCT);
|
|
147
146
|
expect(result.cct).toBeLessThanOrEqual(MAX_CCT);
|
|
148
147
|
expect(result.intensity).toBeGreaterThanOrEqual(MIN_INTENSITY_API); // 5% minimum
|
|
@@ -152,13 +151,13 @@ describe('calculateCCT', () => {
|
|
|
152
151
|
describe('Return value format', () => {
|
|
153
152
|
it('should return rounded integer values', () => {
|
|
154
153
|
const testDate = new Date('2024-06-21T12:00:00Z');
|
|
155
|
-
const result =
|
|
154
|
+
const result = calculateCCT(NYC_LAT, NYC_LON, testDate);
|
|
156
155
|
expect(Number.isInteger(result.cct)).toBe(true);
|
|
157
156
|
expect(Number.isInteger(result.intensity)).toBe(true);
|
|
158
157
|
});
|
|
159
158
|
it('should have correct properties', () => {
|
|
160
159
|
const testDate = new Date('2024-06-21T12:00:00Z');
|
|
161
|
-
const result =
|
|
160
|
+
const result = calculateCCT(NYC_LAT, NYC_LON, testDate);
|
|
162
161
|
expect(result).toHaveProperty('cct');
|
|
163
162
|
expect(result).toHaveProperty('intensity');
|
|
164
163
|
expect(typeof result.cct).toBe('number');
|
|
@@ -172,7 +171,7 @@ describe('calculateCCT', () => {
|
|
|
172
171
|
const base = new Date('2024-06-21T00:00:00Z'); // summer solstice
|
|
173
172
|
for (let hour = 0; hour < 24; hour++) {
|
|
174
173
|
const sample = new Date(base.getTime() + hour * 60 * 60 * 1000);
|
|
175
|
-
const { intensity } =
|
|
174
|
+
const { intensity } = calculateCCT(NYC_LAT, NYC_LON, sample);
|
|
176
175
|
expect(intensity).toBeGreaterThanOrEqual(MIN_INTENSITY_API); // 5% minimum
|
|
177
176
|
expect(intensity).toBeLessThanOrEqual(MAX_INTENSITY_API);
|
|
178
177
|
}
|
|
@@ -196,7 +195,7 @@ describe('calculateCCT', () => {
|
|
|
196
195
|
for (const { lat, lon } of locations) {
|
|
197
196
|
for (const h of offsetsHours) {
|
|
198
197
|
const d = new Date(base.getTime() + h * 60 * 60 * 1000);
|
|
199
|
-
const { intensity } =
|
|
198
|
+
const { intensity } = calculateCCT(lat, lon, d);
|
|
200
199
|
expect(intensity).toBeGreaterThanOrEqual(MIN_INTENSITY_API); // 5% minimum
|
|
201
200
|
expect(intensity).toBeLessThanOrEqual(MAX_INTENSITY_API);
|
|
202
201
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cctUtil.test.js","sourceRoot":"","sources":["../../src/__tests__/cctUtil.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cctUtil.test.js","sourceRoot":"","sources":["../../src/__tests__/cctUtil.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const node_child_process_1 = require("node:child_process");
|
|
7
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
1
|
+
import { exec } from 'node:child_process';
|
|
2
|
+
import path, { dirname } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
5
|
+
const __dirname = dirname(__filename);
|
|
8
6
|
describe('CLI Smoke Test', () => {
|
|
9
7
|
const runTest = process.platform === 'darwin' ? it : it.skip;
|
|
10
|
-
runTest('should run cli help without error - macOS only', (
|
|
11
|
-
const cliPath =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
runTest('should run cli help without error - macOS only', async () => {
|
|
9
|
+
const cliPath = path.resolve(__dirname, '../../dist/cli.js');
|
|
10
|
+
// We use a promise wrapper for exec to use async/await
|
|
11
|
+
// biome-ignore lint/suspicious/noExplicitAny: opts type matches exec options
|
|
12
|
+
const execPromise = (cmd, opts) => new Promise((resolve, reject) => {
|
|
13
|
+
exec(cmd, opts, (error, stdout, stderr) => {
|
|
14
|
+
if (error)
|
|
15
|
+
reject(error);
|
|
16
|
+
else
|
|
17
|
+
resolve({ stdout: stdout.toString(), stderr: stderr.toString() });
|
|
18
|
+
});
|
|
16
19
|
});
|
|
20
|
+
const { stdout } = await execPromise(`node ${cliPath} --help`, { timeout: 10000 });
|
|
21
|
+
expect(stdout).toMatch(/Usage|Help|Options/i);
|
|
17
22
|
}, 15000);
|
|
18
23
|
});
|
|
19
24
|
//# sourceMappingURL=cli.smoke.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.smoke.test.js","sourceRoot":"","sources":["../../src/__tests__/cli.smoke.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.smoke.test.js","sourceRoot":"","sources":["../../src/__tests__/cli.smoke.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;IAE7D,OAAO,CACL,gDAAgD,EAChD,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAC7D,uDAAuD;QACvD,6EAA6E;QAC7E,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,IAAS,EAAE,EAAE,CAC7C,IAAI,OAAO,CAAqC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBACxC,IAAI,KAAK;oBAAE,MAAM,CAAC,KAAK,CAAC,CAAC;;oBACpB,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEL,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,OAAO,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACnF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAChD,CAAC,EACD,KAAK,CACN,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const commander_1 = require("commander");
|
|
7
|
-
const commands_1 = __importDefault(require("../commands"));
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import registerCommands from '../commands.js';
|
|
8
3
|
describe('CLI intensity API usage (0-100 -> 0-1000)', () => {
|
|
9
4
|
function buildProgram(capture) {
|
|
10
|
-
const program = new
|
|
5
|
+
const program = new Command();
|
|
11
6
|
program.exitOverride();
|
|
12
7
|
const mockController = {
|
|
13
8
|
setIntensityForAllLights: async (intensity, cb) => {
|
|
@@ -64,7 +59,7 @@ describe('CLI intensity API usage (0-100 -> 0-1000)', () => {
|
|
|
64
59
|
saveWsUrl: undefined,
|
|
65
60
|
loadConfig: undefined,
|
|
66
61
|
};
|
|
67
|
-
(
|
|
62
|
+
registerCommands(program, deps);
|
|
68
63
|
return program;
|
|
69
64
|
}
|
|
70
65
|
test('intensity command maps percent to 0-1000 for all devices', async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intensityApi.test.js","sourceRoot":"","sources":["../../src/__tests__/intensityApi.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"intensityApi.test.js","sourceRoot":"","sources":["../../src/__tests__/intensityApi.test.ts"],"names":[],"mappings":"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"}
|