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.
- package/LICENSE +1 -1
- package/README.md +58 -2
- package/dist/__tests__/autoCct.test.js +10 -0
- package/dist/__tests__/autoCct.test.js.map +1 -1
- package/dist/__tests__/autostart.test.d.ts +2 -0
- package/dist/__tests__/autostart.test.d.ts.map +1 -0
- package/dist/__tests__/autostart.test.js +131 -0
- package/dist/__tests__/autostart.test.js.map +1 -0
- package/dist/__tests__/cctUtil.test.js +52 -39
- package/dist/__tests__/cctUtil.test.js.map +1 -1
- package/dist/__tests__/cli.smoke.test.js +2 -2
- package/dist/__tests__/cli.smoke.test.js.map +1 -1
- package/dist/__tests__/intensityApi.test.js.map +1 -1
- package/dist/autostart.d.ts +29 -0
- package/dist/autostart.d.ts.map +1 -0
- package/dist/autostart.js +194 -0
- package/dist/autostart.js.map +1 -0
- package/dist/cctUtil.d.ts +12 -15
- package/dist/cctUtil.d.ts.map +1 -1
- package/dist/cctUtil.js +411 -68
- package/dist/cctUtil.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +131 -22
- package/dist/cli.js.map +1 -1
- package/dist/commands/autoCct.d.ts +1 -1
- package/dist/commands/autoCct.d.ts.map +1 -1
- package/dist/commands/autoCct.js +31 -11
- package/dist/commands/autoCct.js.map +1 -1
- package/dist/commands/cct.d.ts.map +1 -1
- package/dist/commands/cct.js +11 -6
- package/dist/commands/cct.js.map +1 -1
- package/dist/commands/color.d.ts.map +1 -1
- package/dist/commands/color.js.map +1 -1
- package/dist/commands/hsi.d.ts.map +1 -1
- package/dist/commands/hsi.js.map +1 -1
- package/dist/commands/intensity.d.ts.map +1 -1
- package/dist/commands/intensity.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/power.d.ts.map +1 -1
- package/dist/commands/power.js.map +1 -1
- package/dist/commands/schedule.d.ts +1 -1
- package/dist/commands/schedule.d.ts.map +1 -1
- package/dist/commands/schedule.js +284 -56
- package/dist/commands/schedule.js.map +1 -1
- package/dist/commands/service.d.ts.map +1 -1
- package/dist/commands/service.js +21 -4
- package/dist/commands/service.js.map +1 -1
- package/dist/commands/simulateSchedule.d.ts +5 -0
- package/dist/commands/simulateSchedule.d.ts.map +1 -0
- package/dist/commands/simulateSchedule.js +219 -0
- package/dist/commands/simulateSchedule.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +27 -22
- package/dist/commands.js.map +1 -1
- package/dist/constants.d.ts +96 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +57 -0
- package/dist/constants.js.map +1 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js.map +1 -1
- package/dist/lightControl.d.ts +4 -2
- package/dist/lightControl.d.ts.map +1 -1
- package/dist/lightControl.js +18 -4
- package/dist/lightControl.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/LICENSE
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2024 S. Zachariah Sprackett <zac@sprackett.com>
|
|
4
3
|
Copyright (c) 2025 Mahyar McDonald <github@hmmfn.com>
|
|
4
|
+
Copyright (c) 2024 S. Zachariah Sprackett <zac@sprackett.com>
|
|
5
5
|
|
|
6
6
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
7
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -263,9 +263,52 @@ chmod +x scripts/create-launchd-service.sh
|
|
|
263
263
|
|
|
264
264
|
View how color temperature and intensity will change throughout the day:
|
|
265
265
|
|
|
266
|
-
```
|
|
266
|
+
```console
|
|
267
267
|
# Preview schedule for today at your current location
|
|
268
|
-
amaran-cli schedule
|
|
268
|
+
$ amaran-cli schedule
|
|
269
|
+
|
|
270
|
+
═══════════════════════════════════════════════════════════
|
|
271
|
+
Auto-CCT Schedule Preview
|
|
272
|
+
═══════════════════════════════════════════════════════════
|
|
273
|
+
|
|
274
|
+
Location: 37.7852°, -122.3874° (manual San Francisco, CA)
|
|
275
|
+
Date: Monday, October 27, 2025
|
|
276
|
+
Interval: Every 30 minutes
|
|
277
|
+
|
|
278
|
+
Sunrise: 07:31 AM
|
|
279
|
+
Solar Noon: 12:54 PM
|
|
280
|
+
Sunset: 06:17 PM
|
|
281
|
+
|
|
282
|
+
───────────────────────────────────────────────────────────
|
|
283
|
+
Time CCT Intensity
|
|
284
|
+
───────────────────────────────────────────────────────────
|
|
285
|
+
07:01 AM 2000K 5%
|
|
286
|
+
07:31 AM 🌅 2000K 5%
|
|
287
|
+
08:01 AM 2095K 7%
|
|
288
|
+
08:31 AM 2372K 13%
|
|
289
|
+
09:01 AM 2807K 22%
|
|
290
|
+
09:31 AM 3363K 34%
|
|
291
|
+
10:01 AM 3995K 47%
|
|
292
|
+
10:31 AM 4648K 61%
|
|
293
|
+
11:01 AM 5268K 74%
|
|
294
|
+
11:31 AM 5801K 85%
|
|
295
|
+
12:01 PM 6204K 94%
|
|
296
|
+
12:31 PM 6442K 99%
|
|
297
|
+
01:01 PM 🌞 6495K 100%
|
|
298
|
+
01:31 PM 6359K 97%
|
|
299
|
+
02:01 PM 6045K 90%
|
|
300
|
+
02:31 PM 5580K 81%
|
|
301
|
+
03:01 PM 5002K 68%
|
|
302
|
+
03:31 PM 4361K 55%
|
|
303
|
+
04:01 PM 3711K 41%
|
|
304
|
+
04:31 PM 3106K 28%
|
|
305
|
+
05:01 PM 2597K 18%
|
|
306
|
+
05:31 PM 2228K 10%
|
|
307
|
+
06:01 PM 2030K 6%
|
|
308
|
+
06:31 PM 🌇 2000K 5%
|
|
309
|
+
───────────────────────────────────────────────────────────
|
|
310
|
+
|
|
311
|
+
Legend: 🌅 Sunrise | 🌞 Solar Noon | 🌇 Sunset
|
|
269
312
|
|
|
270
313
|
# Preview with manual location
|
|
271
314
|
amaran-cli schedule --lat 40.7128 --lon -74.0060
|
|
@@ -366,6 +409,19 @@ Devices can be identified by:
|
|
|
366
409
|
|
|
367
410
|
MIT License - see the [LICENSE](LICENSE) file for details.
|
|
368
411
|
|
|
412
|
+
## Changelog
|
|
413
|
+
|
|
414
|
+
### v1.1.0
|
|
415
|
+
- Updated GitHub Actions workflow for automatic npm publishing on release
|
|
416
|
+
- Improved build and test process in CI/CD pipeline
|
|
417
|
+
- Enhanced release automation
|
|
418
|
+
|
|
419
|
+
### v1.0.3
|
|
420
|
+
- Initial stable release with full CLI functionality
|
|
421
|
+
- WebSocket control for Aputure Amaran lights
|
|
422
|
+
- Auto-CCT circadian lighting feature
|
|
423
|
+
- Service automation for continuous lighting adjustment
|
|
424
|
+
|
|
369
425
|
## Credits
|
|
370
426
|
|
|
371
427
|
- Original WebSocket control implementation by S. Zachariah Sprackett
|
|
@@ -11,6 +11,16 @@ globals_1.jest.mock('../geoipUtil', () => ({
|
|
|
11
11
|
}));
|
|
12
12
|
globals_1.jest.mock('../cctUtil', () => ({
|
|
13
13
|
calculateCCT: globals_1.jest.fn(() => ({ cct: 5600, intensity: 500 })),
|
|
14
|
+
parseCurveType: globals_1.jest.fn(() => 'HANN'),
|
|
15
|
+
CurveType: {
|
|
16
|
+
HANN: 'hann',
|
|
17
|
+
WIDER_MIDDLE_SMALL: 'wider-middle-small',
|
|
18
|
+
WIDER_MIDDLE_MEDIUM: 'wider-middle-medium',
|
|
19
|
+
WIDER_MIDDLE_LARGE: 'wider-middle-large',
|
|
20
|
+
CIE_DAYLIGHT: 'cie-daylight',
|
|
21
|
+
SUN_ALTITUDE: 'sun-altitude',
|
|
22
|
+
PEREZ_DAYLIGHT: 'perez-daylight',
|
|
23
|
+
},
|
|
14
24
|
}));
|
|
15
25
|
describe('auto-cct command', () => {
|
|
16
26
|
const originalFetch = global.fetch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoCct.test.js","sourceRoot":"","sources":["../../src/__tests__/autoCct.test.ts"],"names":[],"mappings":";;;;;AAAA,2CAAqC;AACrC,yCAAoC;AACpC,2DAA2C;AAG3C,cAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/B,iBAAiB,EAAE,cAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;CACjE,CAAC,CAAC,CAAC;AAEJ,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,YAAY,EAAE,cAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"autoCct.test.js","sourceRoot":"","sources":["../../src/__tests__/autoCct.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autostart.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/autostart.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const autostart_1 = require("../autostart");
|
|
4
|
+
// Mock the child_process module
|
|
5
|
+
jest.mock('node:util', () => ({
|
|
6
|
+
promisify: jest.fn((fn) => fn),
|
|
7
|
+
}));
|
|
8
|
+
jest.mock('node:child_process', () => ({
|
|
9
|
+
exec: jest.fn(),
|
|
10
|
+
}));
|
|
11
|
+
jest.mock('node:fs', () => ({
|
|
12
|
+
existsSync: jest.fn(),
|
|
13
|
+
readFileSync: jest.fn(),
|
|
14
|
+
writeFileSync: jest.fn(),
|
|
15
|
+
appendFileSync: jest.fn(),
|
|
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),
|
|
23
|
+
}));
|
|
24
|
+
describe('autostart', () => {
|
|
25
|
+
const mockExec = require('node:child_process').exec;
|
|
26
|
+
const mockFs = require('node:fs');
|
|
27
|
+
beforeEach(() => {
|
|
28
|
+
jest.clearAllMocks();
|
|
29
|
+
jest.spyOn(console, 'log').mockImplementation();
|
|
30
|
+
jest.spyOn(console, 'warn').mockImplementation();
|
|
31
|
+
});
|
|
32
|
+
afterEach(() => {
|
|
33
|
+
jest.restoreAllMocks();
|
|
34
|
+
});
|
|
35
|
+
describe('isAmaranAppRunning', () => {
|
|
36
|
+
it('should return true when amaran process is found', async () => {
|
|
37
|
+
mockExec.mockImplementation((_command, callback) => {
|
|
38
|
+
callback(null, 'amaran Desktop 12345 0.0 0.1 123456 1234 ?? 10:30AM 0:00.01 /Applications/amaran Desktop.app/Contents/MacOS/amaran Desktop', '');
|
|
39
|
+
});
|
|
40
|
+
const result = await (0, autostart_1.isAmaranAppRunning)(true);
|
|
41
|
+
expect(result).toBe(true);
|
|
42
|
+
expect(mockExec).toHaveBeenCalledWith('ps aux | grep -i "amaran desktop" | grep -v grep', expect.any(Function));
|
|
43
|
+
});
|
|
44
|
+
it('should return false when no amaran process is found', async () => {
|
|
45
|
+
mockExec.mockImplementation((_command, callback) => {
|
|
46
|
+
callback(null, '', '');
|
|
47
|
+
});
|
|
48
|
+
const result = await (0, autostart_1.isAmaranAppRunning)(true);
|
|
49
|
+
expect(result).toBe(false);
|
|
50
|
+
});
|
|
51
|
+
it('should return false when exec fails', async () => {
|
|
52
|
+
mockExec.mockImplementation((_command, callback) => {
|
|
53
|
+
callback(new Error('Command failed'), '', '');
|
|
54
|
+
});
|
|
55
|
+
const result = await (0, autostart_1.isAmaranAppRunning)(true);
|
|
56
|
+
expect(result).toBe(false);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe('startAmaranApp', () => {
|
|
60
|
+
it('should start app successfully when autostart is enabled', async () => {
|
|
61
|
+
mockExec.mockImplementation((command, callback) => {
|
|
62
|
+
if (command.includes('open -a "amaran Desktop"')) {
|
|
63
|
+
callback(null, '', '');
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
mockFs.existsSync.mockReturnValue(true);
|
|
67
|
+
mockFs.readFileSync.mockReturnValue(JSON.stringify({ autoStartApp: true }));
|
|
68
|
+
const result = await (0, autostart_1.startAmaranApp)(true);
|
|
69
|
+
expect(result).toBe(true);
|
|
70
|
+
expect(mockExec).toHaveBeenCalledWith('open -a "amaran Desktop" 2>/dev/null', expect.any(Function));
|
|
71
|
+
});
|
|
72
|
+
it('should not start app when autostart is disabled', async () => {
|
|
73
|
+
mockFs.existsSync.mockReturnValue(true);
|
|
74
|
+
mockFs.readFileSync.mockReturnValue(JSON.stringify({ autoStartApp: false }));
|
|
75
|
+
const result = await (0, autostart_1.startAmaranApp)(true);
|
|
76
|
+
expect(result).toBe(false);
|
|
77
|
+
expect(mockExec).not.toHaveBeenCalled();
|
|
78
|
+
});
|
|
79
|
+
it('should try multiple start methods', async () => {
|
|
80
|
+
let callCount = 0;
|
|
81
|
+
mockExec.mockImplementation((_command, callback) => {
|
|
82
|
+
callCount++;
|
|
83
|
+
if (callCount < 3) {
|
|
84
|
+
callback(new Error('Command not found'), '', '');
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
callback(null, '', '');
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
mockFs.existsSync.mockReturnValue(true);
|
|
91
|
+
mockFs.readFileSync.mockReturnValue(JSON.stringify({}));
|
|
92
|
+
const result = await (0, autostart_1.startAmaranApp)(true);
|
|
93
|
+
expect(result).toBe(true);
|
|
94
|
+
expect(mockExec).toHaveBeenCalledTimes(3);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
describe('handleAutostart', () => {
|
|
98
|
+
it('should return false when autostart is disabled', async () => {
|
|
99
|
+
mockFs.existsSync.mockReturnValue(true);
|
|
100
|
+
mockFs.readFileSync.mockReturnValue(JSON.stringify({ autoStartApp: false }));
|
|
101
|
+
const result = await (0, autostart_1.handleAutostart)(true);
|
|
102
|
+
expect(result).toBe(false);
|
|
103
|
+
});
|
|
104
|
+
it('should return true when app is already running', async () => {
|
|
105
|
+
mockExec.mockImplementation((command, callback) => {
|
|
106
|
+
if (command.includes('ps aux')) {
|
|
107
|
+
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
|
+
}
|
|
109
|
+
});
|
|
110
|
+
mockFs.existsSync.mockReturnValue(true);
|
|
111
|
+
mockFs.readFileSync.mockReturnValue(JSON.stringify({}));
|
|
112
|
+
const result = await (0, autostart_1.handleAutostart)(true);
|
|
113
|
+
expect(result).toBe(true);
|
|
114
|
+
});
|
|
115
|
+
it('should attempt to start app when not running', async () => {
|
|
116
|
+
mockExec.mockImplementation((command, callback) => {
|
|
117
|
+
if (command.includes('ps aux')) {
|
|
118
|
+
callback(null, '', '');
|
|
119
|
+
}
|
|
120
|
+
else if (command.includes('open -a "amaran Desktop"')) {
|
|
121
|
+
callback(null, '', '');
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
mockFs.existsSync.mockReturnValue(true);
|
|
125
|
+
mockFs.readFileSync.mockReturnValue(JSON.stringify({}));
|
|
126
|
+
const result = await (0, autostart_1.handleAutostart)(true);
|
|
127
|
+
expect(result).toBe(true);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
//# sourceMappingURL=autostart.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autostart.test.js","sourceRoot":"","sources":["../../src/__tests__/autostart.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,31 +2,37 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const suncalc_1 = require("suncalc");
|
|
4
4
|
const cctUtil_1 = require("../cctUtil");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
5
6
|
describe('calculateCCT', () => {
|
|
6
7
|
const NYC_LAT = 40.7128;
|
|
7
8
|
const NYC_LON = -74.006;
|
|
9
|
+
// Use the actual defaults from the module for all tests
|
|
10
|
+
const MIN_INTENSITY_PCT = constants_1.CCT_DEFAULTS.intensityMinPct;
|
|
11
|
+
const MAX_INTENSITY_PCT = constants_1.CCT_DEFAULTS.intensityMaxPct;
|
|
12
|
+
const MIN_CCT = constants_1.CCT_DEFAULTS.cctMinK;
|
|
13
|
+
const MAX_CCT = constants_1.CCT_DEFAULTS.cctMaxK;
|
|
14
|
+
const MIN_INTENSITY_API = MIN_INTENSITY_PCT * 10; // API format (50)
|
|
15
|
+
const MAX_INTENSITY_API = MAX_INTENSITY_PCT * 10; // API format (1000)
|
|
8
16
|
describe('NYC circadian lighting tests', () => {
|
|
9
17
|
let testDate;
|
|
10
|
-
let
|
|
18
|
+
let _sunrise;
|
|
11
19
|
let sunset;
|
|
12
20
|
let solarNoon;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const MIN_CCT = 2000;
|
|
16
|
-
const MAX_CCT = 6500;
|
|
17
|
-
const MIN_INTENSITY_API = MIN_INTENSITY_PCT * 10; // API format (50)
|
|
18
|
-
const MAX_INTENSITY_API = MAX_INTENSITY_PCT * 10; // API format (1000)
|
|
21
|
+
let nightEnd;
|
|
22
|
+
let night;
|
|
19
23
|
beforeAll(() => {
|
|
20
24
|
// Use a fixed date for consistent test results
|
|
21
25
|
testDate = new Date('2024-06-21T12:00:00Z'); // Summer solstice
|
|
22
26
|
const times = (0, suncalc_1.getTimes)(testDate, NYC_LAT, NYC_LON);
|
|
23
|
-
|
|
27
|
+
_sunrise = times.sunrise;
|
|
24
28
|
sunset = times.sunset;
|
|
25
29
|
solarNoon = times.solarNoon;
|
|
30
|
+
nightEnd = times.nightEnd;
|
|
31
|
+
night = times.night;
|
|
26
32
|
});
|
|
27
|
-
it('should return minimum CCT and intensity before
|
|
28
|
-
const
|
|
29
|
-
const result = (0, cctUtil_1.calculateCCT)(NYC_LAT, NYC_LON,
|
|
33
|
+
it('should return minimum CCT and intensity before nightEnd', () => {
|
|
34
|
+
const beforeNightEnd = new Date(nightEnd.getTime() - 60000); // 1 minute before
|
|
35
|
+
const result = (0, cctUtil_1.calculateCCT)(NYC_LAT, NYC_LON, beforeNightEnd, {
|
|
30
36
|
intensityMinPct: MIN_INTENSITY_PCT,
|
|
31
37
|
intensityMaxPct: MAX_INTENSITY_PCT,
|
|
32
38
|
cctMinK: MIN_CCT,
|
|
@@ -35,15 +41,15 @@ describe('calculateCCT', () => {
|
|
|
35
41
|
expect(result.cct).toBe(MIN_CCT);
|
|
36
42
|
expect(result.intensity).toBe(MIN_INTENSITY_API);
|
|
37
43
|
});
|
|
38
|
-
it('should return minimum CCT and intensity at
|
|
39
|
-
const
|
|
40
|
-
const result = (0, cctUtil_1.calculateCCT)(NYC_LAT, NYC_LON,
|
|
44
|
+
it('should return minimum CCT and intensity at nightEnd edge', () => {
|
|
45
|
+
const atNightEnd = new Date(nightEnd.getTime());
|
|
46
|
+
const result = (0, cctUtil_1.calculateCCT)(NYC_LAT, NYC_LON, atNightEnd, {
|
|
41
47
|
intensityMinPct: MIN_INTENSITY_PCT,
|
|
42
48
|
intensityMaxPct: MAX_INTENSITY_PCT,
|
|
43
49
|
cctMinK: MIN_CCT,
|
|
44
50
|
cctMaxK: MAX_CCT,
|
|
45
51
|
});
|
|
46
|
-
// At the exact
|
|
52
|
+
// At the exact nightEnd moment, should be at minimum for empirical curves
|
|
47
53
|
expect(result.cct).toBe(MIN_CCT);
|
|
48
54
|
expect(result.intensity).toBe(MIN_INTENSITY_API);
|
|
49
55
|
});
|
|
@@ -59,21 +65,21 @@ describe('calculateCCT', () => {
|
|
|
59
65
|
expect(result.cct).toBe(MAX_CCT);
|
|
60
66
|
expect(result.intensity).toBe(MAX_INTENSITY_API);
|
|
61
67
|
});
|
|
62
|
-
it('should return minimum CCT and intensity at
|
|
63
|
-
const
|
|
64
|
-
const result = (0, cctUtil_1.calculateCCT)(NYC_LAT, NYC_LON,
|
|
68
|
+
it('should return minimum CCT and intensity at night edge', () => {
|
|
69
|
+
const atNight = new Date(night.getTime());
|
|
70
|
+
const result = (0, cctUtil_1.calculateCCT)(NYC_LAT, NYC_LON, atNight, {
|
|
65
71
|
intensityMinPct: MIN_INTENSITY_PCT,
|
|
66
72
|
intensityMaxPct: MAX_INTENSITY_PCT,
|
|
67
73
|
cctMinK: MIN_CCT,
|
|
68
74
|
cctMaxK: MAX_CCT,
|
|
69
75
|
});
|
|
70
|
-
// At the exact
|
|
76
|
+
// At the exact night moment, should be at minimum
|
|
71
77
|
expect(result.cct).toBe(MIN_CCT);
|
|
72
78
|
expect(result.intensity).toBe(MIN_INTENSITY_API);
|
|
73
79
|
});
|
|
74
|
-
it('should return minimum CCT and intensity after
|
|
75
|
-
const
|
|
76
|
-
const result = (0, cctUtil_1.calculateCCT)(NYC_LAT, NYC_LON,
|
|
80
|
+
it('should return minimum CCT and intensity after night', () => {
|
|
81
|
+
const afterNight = new Date(night.getTime() + 60000); // 1 minute after
|
|
82
|
+
const result = (0, cctUtil_1.calculateCCT)(NYC_LAT, NYC_LON, afterNight, {
|
|
77
83
|
intensityMinPct: MIN_INTENSITY_PCT,
|
|
78
84
|
intensityMaxPct: MAX_INTENSITY_PCT,
|
|
79
85
|
cctMinK: MIN_CCT,
|
|
@@ -82,8 +88,8 @@ describe('calculateCCT', () => {
|
|
|
82
88
|
expect(result.cct).toBe(MIN_CCT);
|
|
83
89
|
expect(result.intensity).toBe(MIN_INTENSITY_API);
|
|
84
90
|
});
|
|
85
|
-
it('should have smooth progression from
|
|
86
|
-
const quarterWay = new Date(
|
|
91
|
+
it('should have smooth progression from nightEnd to noon', () => {
|
|
92
|
+
const quarterWay = new Date(nightEnd.getTime() + (solarNoon.getTime() - nightEnd.getTime()) / 4);
|
|
87
93
|
const result = (0, cctUtil_1.calculateCCT)(NYC_LAT, NYC_LON, quarterWay, {
|
|
88
94
|
intensityMinPct: MIN_INTENSITY_PCT,
|
|
89
95
|
intensityMaxPct: MAX_INTENSITY_PCT,
|
|
@@ -115,25 +121,32 @@ describe('calculateCCT', () => {
|
|
|
115
121
|
it('should handle midnight times', () => {
|
|
116
122
|
const midnight = new Date('2024-06-21T04:00:00Z'); // Midnight in NYC
|
|
117
123
|
const result = (0, cctUtil_1.calculateCCT)(NYC_LAT, NYC_LON, midnight);
|
|
118
|
-
expect(result.cct).toBe(
|
|
119
|
-
expect(result.intensity).toBe(
|
|
124
|
+
expect(result.cct).toBe(MIN_CCT);
|
|
125
|
+
expect(result.intensity).toBe(MIN_INTENSITY_API);
|
|
120
126
|
});
|
|
121
127
|
it('should return valid results for different locations', () => {
|
|
122
128
|
const LONDON_LAT = 51.5074;
|
|
123
129
|
const LONDON_LON = -0.1278;
|
|
124
130
|
const testDate = new Date('2024-06-21T12:00:00Z');
|
|
125
131
|
const result = (0, cctUtil_1.calculateCCT)(LONDON_LAT, LONDON_LON, testDate);
|
|
126
|
-
expect(result.cct).toBeGreaterThanOrEqual(
|
|
127
|
-
expect(result.cct).toBeLessThanOrEqual(
|
|
128
|
-
expect(result.intensity).toBeGreaterThanOrEqual(
|
|
129
|
-
expect(result.intensity).toBeLessThanOrEqual(
|
|
132
|
+
expect(result.cct).toBeGreaterThanOrEqual(MIN_CCT);
|
|
133
|
+
expect(result.cct).toBeLessThanOrEqual(MAX_CCT);
|
|
134
|
+
expect(result.intensity).toBeGreaterThanOrEqual(MIN_INTENSITY_API); // 5% minimum
|
|
135
|
+
expect(result.intensity).toBeLessThanOrEqual(MAX_INTENSITY_API);
|
|
136
|
+
});
|
|
137
|
+
it('should use default options when none provided', () => {
|
|
138
|
+
const result = (0, cctUtil_1.calculateCCT)(NYC_LAT, NYC_LON, new Date('2024-06-21T12:00:00Z'));
|
|
139
|
+
expect(result.cct).toBeGreaterThanOrEqual(MIN_CCT);
|
|
140
|
+
expect(result.cct).toBeLessThanOrEqual(MAX_CCT);
|
|
141
|
+
expect(result.intensity).toBeGreaterThanOrEqual(MIN_INTENSITY_API); // 5% minimum
|
|
142
|
+
expect(result.intensity).toBeLessThanOrEqual(MAX_INTENSITY_API);
|
|
130
143
|
});
|
|
131
144
|
it('should use default date if not provided', () => {
|
|
132
145
|
const result = (0, cctUtil_1.calculateCCT)(NYC_LAT, NYC_LON);
|
|
133
|
-
expect(result.cct).toBeGreaterThanOrEqual(
|
|
134
|
-
expect(result.cct).toBeLessThanOrEqual(
|
|
135
|
-
expect(result.intensity).toBeGreaterThanOrEqual(
|
|
136
|
-
expect(result.intensity).toBeLessThanOrEqual(
|
|
146
|
+
expect(result.cct).toBeGreaterThanOrEqual(MIN_CCT);
|
|
147
|
+
expect(result.cct).toBeLessThanOrEqual(MAX_CCT);
|
|
148
|
+
expect(result.intensity).toBeGreaterThanOrEqual(MIN_INTENSITY_API); // 5% minimum
|
|
149
|
+
expect(result.intensity).toBeLessThanOrEqual(MAX_INTENSITY_API);
|
|
137
150
|
});
|
|
138
151
|
});
|
|
139
152
|
describe('Return value format', () => {
|
|
@@ -155,13 +168,13 @@ describe('calculateCCT', () => {
|
|
|
155
168
|
describe('Intensity ranges', () => {
|
|
156
169
|
const NYC_LAT = 40.7128;
|
|
157
170
|
const NYC_LON = -74.006;
|
|
158
|
-
it(
|
|
171
|
+
it(`intensity stays within [${MIN_INTENSITY_API}, ${MAX_INTENSITY_API}] across a whole day (hourly samples)`, () => {
|
|
159
172
|
const base = new Date('2024-06-21T00:00:00Z'); // summer solstice
|
|
160
173
|
for (let hour = 0; hour < 24; hour++) {
|
|
161
174
|
const sample = new Date(base.getTime() + hour * 60 * 60 * 1000);
|
|
162
175
|
const { intensity } = (0, cctUtil_1.calculateCCT)(NYC_LAT, NYC_LON, sample);
|
|
163
|
-
expect(intensity).toBeGreaterThanOrEqual(
|
|
164
|
-
expect(intensity).toBeLessThanOrEqual(
|
|
176
|
+
expect(intensity).toBeGreaterThanOrEqual(MIN_INTENSITY_API); // 5% minimum
|
|
177
|
+
expect(intensity).toBeLessThanOrEqual(MAX_INTENSITY_API);
|
|
165
178
|
}
|
|
166
179
|
});
|
|
167
180
|
it('intensity stays within range across seasons and locations (spot samples)', () => {
|
|
@@ -184,8 +197,8 @@ describe('calculateCCT', () => {
|
|
|
184
197
|
for (const h of offsetsHours) {
|
|
185
198
|
const d = new Date(base.getTime() + h * 60 * 60 * 1000);
|
|
186
199
|
const { intensity } = (0, cctUtil_1.calculateCCT)(lat, lon, d);
|
|
187
|
-
expect(intensity).toBeGreaterThanOrEqual(
|
|
188
|
-
expect(intensity).toBeLessThanOrEqual(
|
|
200
|
+
expect(intensity).toBeGreaterThanOrEqual(MIN_INTENSITY_API); // 5% minimum
|
|
201
|
+
expect(intensity).toBeLessThanOrEqual(MAX_INTENSITY_API);
|
|
189
202
|
}
|
|
190
203
|
}
|
|
191
204
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cctUtil.test.js","sourceRoot":"","sources":["../../src/__tests__/cctUtil.test.ts"],"names":[],"mappings":";;AAAA,qCAAmC;AACnC,wCAA0C;
|
|
1
|
+
{"version":3,"file":"cctUtil.test.js","sourceRoot":"","sources":["../../src/__tests__/cctUtil.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,11 +8,11 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
8
8
|
describe('CLI Smoke Test', () => {
|
|
9
9
|
it('should run cli help without error', (done) => {
|
|
10
10
|
const cliPath = node_path_1.default.resolve(__dirname, '../../dist/cli.js');
|
|
11
|
-
(0, node_child_process_1.exec)(`node ${cliPath} --help`, (error, stdout, _stderr) => {
|
|
11
|
+
(0, node_child_process_1.exec)(`node ${cliPath} --help`, { timeout: 10000 }, (error, stdout, _stderr) => {
|
|
12
12
|
expect(error).toBeNull();
|
|
13
13
|
expect(stdout).toMatch(/Usage|Help|Options/i);
|
|
14
14
|
done();
|
|
15
15
|
});
|
|
16
|
-
});
|
|
16
|
+
}, 15000);
|
|
17
17
|
});
|
|
18
18
|
//# 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":";;;;;AAAA,2DAA0C;AAC1C,0DAA6B;AAE7B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,mCAAmC,EAAE,CAAC,IAAI,EAAE,EAAE;QAC/C,MAAM,OAAO,GAAG,mBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAC7D,IAAA,yBAAI,EAAC,QAAQ,OAAO,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"cli.smoke.test.js","sourceRoot":"","sources":["../../src/__tests__/cli.smoke.test.ts"],"names":[],"mappings":";;;;;AAAA,2DAA0C;AAC1C,0DAA6B;AAE7B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,mCAAmC,EAAE,CAAC,IAAI,EAAE,EAAE;QAC/C,MAAM,OAAO,GAAG,mBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAC7D,IAAA,yBAAI,EAAC,QAAQ,OAAO,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;YAC5E,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YAC9C,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intensityApi.test.js","sourceRoot":"","sources":["../../src/__tests__/intensityApi.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAAoC;AACpC,2DAA2C;
|
|
1
|
+
{"version":3,"file":"intensityApi.test.js","sourceRoot":"","sources":["../../src/__tests__/intensityApi.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAAoC;AACpC,2DAA2C;AAuC3C,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACzD,SAAS,YAAY,CAAC,OAAoB;QACxC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,YAAY,EAAE,CAAC;QAEvB,MAAM,cAAc,GAAmB;YACrC,wBAAwB,EAAE,KAAK,EAAE,SAAiB,EAAE,EAAgD,EAAE,EAAE;gBACtG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;gBACpC,IAAI,EAAE,EAAE,CAAC;oBACP,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,YAAY,EAAE,CAAC,MAAc,EAAE,SAAiB,EAAE,EAAgD,EAAE,EAAE;gBACpG,OAAO,CAAC,YAAY,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBAC7C,IAAI,EAAE,EAAE,CAAC;oBACP,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,8BAA8B,EAAE,KAAK,EACnC,GAAW,EACX,SAAkB,EAClB,EAAgD,EAChD,EAAE;gBACF,OAAO,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;gBACvC,IAAI,EAAE,EAAE,CAAC;oBACP,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,kBAAkB,EAAE,KAAK,EACvB,CAAS,EACT,CAAS,EACT,CAAS,EACT,EAAW,EACX,EAAW,EACX,EAAgD,EAChD,EAAE;gBACF,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gBAChC,IAAI,EAAE,EAAE,CAAC;oBACP,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,oBAAoB,EAAE,KAAK,EACzB,KAAa,EACb,SAAkB,EAClB,EAAgD,EAChD,EAAE;gBACF,OAAO,CAAC,WAAW,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;gBAC3C,IAAI,EAAE,EAAE,CAAC;oBACP,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,UAAU,EAAE,KAAK,IAAI,EAAE;gBACrB,kBAAkB;YACpB,CAAC;YACD,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;YACnE,eAAe,EAAE,KAAK,IAAI,EAAE;gBAC1B,kBAAkB;YACpB,CAAC;YACD,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC3B,kBAAkB;YACpB,CAAC;YACD,eAAe,EAAE,KAAK,IAAI,EAAE;gBAC1B,kBAAkB;YACpB,CAAC;SACF,CAAC;QAEF,MAAM,IAAI,GAAG;YACX,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,cAA4C;YAC1E,UAAU,EAAE,CAAC,WAAoB,EAAE,MAAc,EAAiB,EAAE,CAAC,CAAC;gBACpE,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,YAAY;aAC1B,CAAC;YACF,YAAY,EACV,CAAsB,EAAiC,EAAE,EAAE,CAC3D,CAAC,GAAG,IAAO,EAAE,EAAE,CACb,EAAE,CAAC,GAAG,IAAI,CAAC;YACf,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,SAAS;SACtB,CAAC;QAEF,IAAA,kBAAgB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACrE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAgB,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACtF,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACvF,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface AppConfig {
|
|
2
|
+
wsUrl?: string;
|
|
3
|
+
clientId?: string;
|
|
4
|
+
debug?: boolean;
|
|
5
|
+
latitude?: number;
|
|
6
|
+
longitude?: number;
|
|
7
|
+
cctMin?: number;
|
|
8
|
+
cctMax?: number;
|
|
9
|
+
intensityMin?: number;
|
|
10
|
+
intensityMax?: number;
|
|
11
|
+
autoStartApp?: boolean;
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Check if the Amaran desktop app is running by looking for processes
|
|
16
|
+
* that contain "amaran desktop" (case-insensitive)
|
|
17
|
+
*/
|
|
18
|
+
export declare function isAmaranAppRunning(debug?: boolean): Promise<boolean>;
|
|
19
|
+
/**
|
|
20
|
+
* Attempt to start the Amaran desktop app
|
|
21
|
+
* This implementation tries common locations and methods for macOS
|
|
22
|
+
*/
|
|
23
|
+
export declare function startAmaranApp(debug?: boolean): Promise<boolean>;
|
|
24
|
+
/**
|
|
25
|
+
* Main function to handle autostart logic
|
|
26
|
+
* Checks if app is running, and if not, attempts to start it (unless disabled)
|
|
27
|
+
*/
|
|
28
|
+
export declare function handleAutostart(debug?: boolean): Promise<boolean>;
|
|
29
|
+
//# sourceMappingURL=autostart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autostart.d.ts","sourceRoot":"","sources":["../src/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"}
|