amaran-light-cli 1.1.4 → 1.4.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/CHANGELOG.md +44 -9
- package/README.md +32 -5
- 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 +106 -107
- 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 -247
- 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 +74 -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 +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +64 -66
- package/dist/commands/config.js.map +1 -1
- 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/graphSchedule.d.ts +5 -0
- package/dist/commands/graphSchedule.d.ts.map +1 -0
- package/dist/commands/graphSchedule.js +293 -0
- package/dist/commands/graphSchedule.js.map +1 -0
- 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} +113 -116
- 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 +52 -54
- 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 +2 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -2
- package/package.json +17 -15
- package/scripts/release.js +8 -4
- package/scripts/test.sh +2 -2
- 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
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
3
|
+
import registerCommands from '../../commands.js';
|
|
4
|
+
import LightController from '../../lightControl.js';
|
|
5
|
+
import { MockLightServer } from '../../test/MockLightServer.js';
|
|
6
|
+
const TEST_PORT = 8090;
|
|
7
|
+
const WS_URL = `ws://localhost:${TEST_PORT}`;
|
|
8
|
+
describe('CLI Integration Tests', () => {
|
|
9
|
+
let server;
|
|
10
|
+
beforeAll(async () => {
|
|
11
|
+
server = new MockLightServer(TEST_PORT);
|
|
12
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
13
|
+
});
|
|
14
|
+
afterAll(async () => {
|
|
15
|
+
await new Promise((resolve) => {
|
|
16
|
+
server.close(() => resolve());
|
|
17
|
+
});
|
|
18
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
19
|
+
});
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
server.resetState();
|
|
22
|
+
});
|
|
23
|
+
const createDeps = () => {
|
|
24
|
+
const controller = new LightController(WS_URL, 'test-cli', undefined, false);
|
|
25
|
+
// Mock the disconnect to not actually close the socket immediately if needed,
|
|
26
|
+
// or arguably we DO want it to close to test the CLI behavior.
|
|
27
|
+
// The CLI calls disconnect() at the end.
|
|
28
|
+
// If we want to check state after, we should ensure the COMMAND has finished,
|
|
29
|
+
// and the server state should persist even if client disconnects.
|
|
30
|
+
return {
|
|
31
|
+
createController: async () => {
|
|
32
|
+
// Wait for connection and device list
|
|
33
|
+
await new Promise((resolve, reject) => {
|
|
34
|
+
const ws = controller.getWebSocket();
|
|
35
|
+
// If already open, just fetch list
|
|
36
|
+
const fetchDevices = () => {
|
|
37
|
+
controller.getDeviceList((success) => {
|
|
38
|
+
if (success)
|
|
39
|
+
resolve();
|
|
40
|
+
else
|
|
41
|
+
reject(new Error('Failed to fetch devices'));
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
if (ws.readyState === 1) {
|
|
45
|
+
fetchDevices();
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
ws.once('open', () => {
|
|
49
|
+
// small delay to let onConnectionOpen trigger if needed, or just manual fetch
|
|
50
|
+
setTimeout(fetchDevices, 50);
|
|
51
|
+
});
|
|
52
|
+
ws.once('error', reject);
|
|
53
|
+
setTimeout(() => reject(new Error('Timeout connecting to mock server')), 2000);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
return controller;
|
|
57
|
+
},
|
|
58
|
+
findDevice: (ctrl, deviceQuery) => {
|
|
59
|
+
const devices = ctrl.getDevices();
|
|
60
|
+
let device = devices.find((d) => d.node_id === deviceQuery || d.id === deviceQuery);
|
|
61
|
+
if (!device) {
|
|
62
|
+
const q = deviceQuery.toLowerCase();
|
|
63
|
+
device = devices.find((d) => {
|
|
64
|
+
const nm = (d.device_name || d.name || '').toLowerCase();
|
|
65
|
+
return nm.includes(q);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return device || null;
|
|
69
|
+
},
|
|
70
|
+
asyncCommand: (fn) => (...args) => fn(...args),
|
|
71
|
+
// We throw instead of process.exit for tests?
|
|
72
|
+
// Real asyncCommand does process.exit(1) on failure.
|
|
73
|
+
// We probably want to keep that or mock it.
|
|
74
|
+
// If we want to capture errors, we might mock process.exit.
|
|
75
|
+
loadConfig: () => ({}),
|
|
76
|
+
saveWsUrl: vi.fn(),
|
|
77
|
+
saveConfig: vi.fn(),
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
it('should turn on a light via power command', async () => {
|
|
81
|
+
const program = new Command();
|
|
82
|
+
program.exitOverride(); // Throw instead of exit
|
|
83
|
+
const deps = createDeps();
|
|
84
|
+
registerCommands(program, deps);
|
|
85
|
+
// Capture console output
|
|
86
|
+
const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {
|
|
87
|
+
/* no-op */
|
|
88
|
+
});
|
|
89
|
+
await program.parseAsync(['node', 'test', 'on', '400J5-F2C008']);
|
|
90
|
+
// Wait for async command to complete (single device commands in CLI are not awaited)
|
|
91
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
92
|
+
const state = server.getDeviceState('400J5-F2C008');
|
|
93
|
+
expect(state?.sleep).toBe(false); // On = sleep false
|
|
94
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('turned on'));
|
|
95
|
+
consoleSpy.mockRestore();
|
|
96
|
+
});
|
|
97
|
+
it('should turn off a light via power command', async () => {
|
|
98
|
+
const program = new Command();
|
|
99
|
+
program.exitOverride();
|
|
100
|
+
const deps = createDeps();
|
|
101
|
+
registerCommands(program, deps);
|
|
102
|
+
// Set initial state to ON (sleep false)
|
|
103
|
+
// Actually default is On (sleep false) in our mock server?
|
|
104
|
+
// Wait, MockLightServer: sleep: false by default.
|
|
105
|
+
// So "Off" should make sleep: true.
|
|
106
|
+
const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {
|
|
107
|
+
/* no-op */
|
|
108
|
+
});
|
|
109
|
+
await program.parseAsync(['node', 'test', 'off', '400J5-F2C008']);
|
|
110
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
111
|
+
const state = server.getDeviceState('400J5-F2C008');
|
|
112
|
+
expect(state?.sleep).toBe(true);
|
|
113
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('turned off'));
|
|
114
|
+
consoleSpy.mockRestore();
|
|
115
|
+
});
|
|
116
|
+
it('should set intensity via intensity command', async () => {
|
|
117
|
+
const program = new Command();
|
|
118
|
+
program.exitOverride();
|
|
119
|
+
const deps = createDeps();
|
|
120
|
+
registerCommands(program, deps);
|
|
121
|
+
const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {
|
|
122
|
+
/* no-op */
|
|
123
|
+
});
|
|
124
|
+
await program.parseAsync(['node', 'test', 'intensity', '50', '400J5-F2C008']);
|
|
125
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
126
|
+
const state = server.getDeviceState('400J5-F2C008');
|
|
127
|
+
// CLI takes 0-100, converts to 0-1000?
|
|
128
|
+
// Let's check src/commands/intensity.ts.
|
|
129
|
+
// Usually invalid args might fail, assuming 50 means 50% = 500
|
|
130
|
+
expect(state?.intensity).toBe(500);
|
|
131
|
+
consoleSpy.mockRestore();
|
|
132
|
+
});
|
|
133
|
+
it('should set CCT via cct command', async () => {
|
|
134
|
+
const program = new Command();
|
|
135
|
+
program.exitOverride();
|
|
136
|
+
const deps = createDeps();
|
|
137
|
+
registerCommands(program, deps);
|
|
138
|
+
const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {
|
|
139
|
+
/* no-op */
|
|
140
|
+
});
|
|
141
|
+
await program.parseAsync(['node', 'test', 'cct', '5600', '400J5-F2C008']);
|
|
142
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
143
|
+
const state = server.getDeviceState('400J5-F2C008');
|
|
144
|
+
expect(state?.cct).toBe(5600);
|
|
145
|
+
expect(state?.work_mode).toBe('CCT');
|
|
146
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('set to 5600K'));
|
|
147
|
+
consoleSpy.mockRestore();
|
|
148
|
+
});
|
|
149
|
+
it('should set CCT and intensity via cct command', async () => {
|
|
150
|
+
const program = new Command();
|
|
151
|
+
program.exitOverride();
|
|
152
|
+
const deps = createDeps();
|
|
153
|
+
registerCommands(program, deps);
|
|
154
|
+
await program.parseAsync(['node', 'test', 'cct', '3200', '-i', '80', '400J5-F2C008']);
|
|
155
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
156
|
+
const state = server.getDeviceState('400J5-F2C008');
|
|
157
|
+
expect(state?.cct).toBe(3200);
|
|
158
|
+
expect(state?.intensity).toBe(800); // 80% = 800
|
|
159
|
+
expect(state?.work_mode).toBe('CCT');
|
|
160
|
+
});
|
|
161
|
+
it('should set HSI via hsi command', async () => {
|
|
162
|
+
const program = new Command();
|
|
163
|
+
program.exitOverride();
|
|
164
|
+
const deps = createDeps();
|
|
165
|
+
registerCommands(program, deps);
|
|
166
|
+
await program.parseAsync(['node', 'test', 'hsi', '240', '100', '50', '400J5-F2C008']);
|
|
167
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
168
|
+
const state = server.getDeviceState('400J5-F2C008');
|
|
169
|
+
expect(state?.hue).toBe(240);
|
|
170
|
+
expect(state?.sat).toBe(100);
|
|
171
|
+
expect(state?.intensity).toBe(500); // 50% = 500
|
|
172
|
+
expect(state?.work_mode).toBe('HSI');
|
|
173
|
+
});
|
|
174
|
+
it('should send Set Color command via color command', async () => {
|
|
175
|
+
const program = new Command();
|
|
176
|
+
program.exitOverride();
|
|
177
|
+
const deps = createDeps();
|
|
178
|
+
registerCommands(program, deps);
|
|
179
|
+
// The CLI converts color name to something?
|
|
180
|
+
// Actually src/commands/color.ts simply calls controller.setColor
|
|
181
|
+
// which mock server just logs/acks but doesn't change state much unless we parse it.
|
|
182
|
+
// The MockLightServer currently doesn't update specific state for setColor,
|
|
183
|
+
// but the command logic should proceed and succeed.
|
|
184
|
+
// Check if color command throws
|
|
185
|
+
const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {
|
|
186
|
+
/* no-op */
|
|
187
|
+
});
|
|
188
|
+
await program.parseAsync(['node', 'test', 'color', 'red', '400J5-F2C008']);
|
|
189
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
190
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('color set to red'));
|
|
191
|
+
consoleSpy.mockRestore();
|
|
192
|
+
});
|
|
193
|
+
it('should list all devices via list command', async () => {
|
|
194
|
+
const program = new Command();
|
|
195
|
+
program.exitOverride();
|
|
196
|
+
const deps = createDeps();
|
|
197
|
+
registerCommands(program, deps);
|
|
198
|
+
const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {
|
|
199
|
+
/* no-op */
|
|
200
|
+
});
|
|
201
|
+
await program.parseAsync(['node', 'test', 'list']);
|
|
202
|
+
// No async wait needed as list doesn't have an async device operation after the initial fetch which createController handles?
|
|
203
|
+
// Wait, list does createController -> getDevices (sync on client side) -> log -> disconnect.
|
|
204
|
+
// createController does async fetch.
|
|
205
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Test Light 1'));
|
|
206
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Test Light 2'));
|
|
207
|
+
consoleSpy.mockRestore();
|
|
208
|
+
});
|
|
209
|
+
it('should show status for a device via status command', async () => {
|
|
210
|
+
const program = new Command();
|
|
211
|
+
program.exitOverride();
|
|
212
|
+
const deps = createDeps();
|
|
213
|
+
registerCommands(program, deps);
|
|
214
|
+
const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {
|
|
215
|
+
/* no-op */
|
|
216
|
+
});
|
|
217
|
+
// Ensure some known state
|
|
218
|
+
server.resetState();
|
|
219
|
+
// Default: sleep false (On), 0 intensity, 3200K
|
|
220
|
+
await program.parseAsync(['node', 'test', 'status', '400J5-F2C008']);
|
|
221
|
+
await new Promise((resolve) => setTimeout(resolve, 100)); // status fetches sleep status async
|
|
222
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Status for Test Light 1'));
|
|
223
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('State: On'));
|
|
224
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Intensity: 0%'));
|
|
225
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Temperature: 3200K')); // Default in mock
|
|
226
|
+
consoleSpy.mockRestore();
|
|
227
|
+
});
|
|
228
|
+
it('should run auto-cct command and update lights', async () => {
|
|
229
|
+
const program = new Command();
|
|
230
|
+
program.exitOverride();
|
|
231
|
+
const deps = createDeps();
|
|
232
|
+
registerCommands(program, deps);
|
|
233
|
+
const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {
|
|
234
|
+
/* no-op */
|
|
235
|
+
});
|
|
236
|
+
// Ensure we have devices via reset
|
|
237
|
+
server.resetState();
|
|
238
|
+
// Run auto-cct with explicit location/time to avoid external factors
|
|
239
|
+
// Use Summer Solstice noon to ensure high CCT (Winter noon is lower due to solar altitude)
|
|
240
|
+
await program.parseAsync([
|
|
241
|
+
'node',
|
|
242
|
+
'test',
|
|
243
|
+
'auto-cct',
|
|
244
|
+
'--lat',
|
|
245
|
+
'40.7128',
|
|
246
|
+
'--lon',
|
|
247
|
+
'-74.0060',
|
|
248
|
+
'--time',
|
|
249
|
+
'2025-06-21T12:00:00-04:00',
|
|
250
|
+
]);
|
|
251
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
252
|
+
// At noon it should be cool (6500K)
|
|
253
|
+
const state = server.getDeviceState('400J5-F2C008');
|
|
254
|
+
// Expect CCT to be changed.
|
|
255
|
+
expect(state?.cct).toBeGreaterThan(5000);
|
|
256
|
+
expect(state?.intensity).toBeGreaterThan(0);
|
|
257
|
+
consoleSpy.mockRestore();
|
|
258
|
+
});
|
|
259
|
+
it('should save and list config via config command', async () => {
|
|
260
|
+
const program = new Command();
|
|
261
|
+
program.exitOverride();
|
|
262
|
+
const deps = createDeps();
|
|
263
|
+
// Spy on saveConfig
|
|
264
|
+
const saveConfigSpy = vi.fn();
|
|
265
|
+
deps.saveConfig = saveConfigSpy;
|
|
266
|
+
registerCommands(program, deps);
|
|
267
|
+
const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {
|
|
268
|
+
/* no-op */
|
|
269
|
+
});
|
|
270
|
+
// Set config
|
|
271
|
+
await program.parseAsync(['node', 'test', 'config', '--cct-min', '2500']);
|
|
272
|
+
expect(saveConfigSpy).toHaveBeenCalledWith(expect.objectContaining({ cctMin: 2500 }), expect.anything());
|
|
273
|
+
// Show config
|
|
274
|
+
await program.parseAsync(['node', 'test', 'config', '--show']);
|
|
275
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Current configuration:'));
|
|
276
|
+
consoleSpy.mockRestore();
|
|
277
|
+
});
|
|
278
|
+
});
|
|
279
|
+
//# sourceMappingURL=integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/integration.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACnF,OAAO,gBAAgB,MAAM,mBAAmB,CAAC;AACjD,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,MAAM,GAAG,kBAAkB,SAAS,EAAE,CAAC;AAE7C,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,MAAuB,CAAC;IAE5B,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7E,8EAA8E;QAC9E,+DAA+D;QAC/D,yCAAyC;QACzC,8EAA8E;QAC9E,kEAAkE;QAElE,OAAO;YACL,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC3B,sCAAsC;gBACtC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC1C,MAAM,EAAE,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;oBAErC,mCAAmC;oBACnC,MAAM,YAAY,GAAG,GAAG,EAAE;wBACxB,UAAU,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE;4BACnC,IAAI,OAAO;gCAAE,OAAO,EAAE,CAAC;;gCAClB,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;wBACpD,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC;oBAEF,IAAI,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;wBACxB,YAAY,EAAE,CAAC;oBACjB,CAAC;yBAAM,CAAC;wBACN,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;4BACnB,8EAA8E;4BAC9E,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;wBAC/B,CAAC,CAAC,CAAC;wBACH,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;wBACzB,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACjF,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,OAAO,UAAU,CAAC;YACpB,CAAC;YACD,UAAU,EAAE,CAAC,IAAyB,EAAE,WAAmB,EAAE,EAAE;gBAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClC,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,WAAW,IAAI,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;gBAC5F,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,CAAC,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;oBACpC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE;wBAClC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;wBACzD,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACxB,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,MAAM,IAAI,IAAI,CAAC;YACxB,CAAC;YACD,YAAY,EACV,CAAsB,EAAiC,EAAE,EAAE,CAC3D,CAAC,GAAG,IAAO,EAAE,EAAE,CACb,EAAE,CAAC,GAAG,IAAI,CAAC;YACf,8CAA8C;YAC9C,qDAAqD;YACrD,4CAA4C;YAC5C,4DAA4D;YAC5D,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;YACtB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;YAClB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;SACpB,CAAC;IACJ,CAAC,CAAC;IAEF,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,wBAAwB;QAChD,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEhC,yBAAyB;QACzB,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAClE,WAAW;QACb,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QACjE,qFAAqF;QACrF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB;QACrD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;QAE9E,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEhC,wCAAwC;QACxC,2DAA2D;QAC3D,kDAAkD;QAClD,oCAAoC;QAEpC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAClE,WAAW;QACb,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;QAClE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;QAE/E,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEhC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAClE,WAAW;QACb,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QAC9E,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACpD,uCAAuC;QACvC,yCAAyC;QACzC,+DAA+D;QAC/D,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEnC,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEhC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAClE,WAAW;QACb,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;QAEjF,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEhC,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QACtF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY;QAChD,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEhC,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QACtF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY;QAChD,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEhC,4CAA4C;QAC5C,kEAAkE;QAClE,qFAAqF;QACrF,4EAA4E;QAC5E,oDAAoD;QAEpD,gCAAgC;QAChC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAClE,WAAW;QACb,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;QAC3E,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACrF,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEhC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAClE,WAAW;QACb,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACnD,8HAA8H;QAC9H,6FAA6F;QAC7F,qCAAqC;QAErC,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;QACjF,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;QACjF,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEhC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAClE,WAAW;QACb,CAAC,CAAC,CAAC;QAEH,0BAA0B;QAC1B,MAAM,CAAC,UAAU,EAAE,CAAC;QACpB,gDAAgD;QAEhD,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;QACrE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,oCAAoC;QAE9F,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAC5F,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;QAC9E,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;QAClF,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,kBAAkB;QAE1G,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEhC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAClE,WAAW;QACb,CAAC,CAAC,CAAC;QAEH,mCAAmC;QACnC,MAAM,CAAC,UAAU,EAAE,CAAC;QAEpB,qEAAqE;QACrE,2FAA2F;QAC3F,MAAM,OAAO,CAAC,UAAU,CAAC;YACvB,MAAM;YACN,MAAM;YACN,UAAU;YACV,OAAO;YACP,SAAS;YACT,OAAO;YACP,UAAU;YACV,QAAQ;YACR,2BAA2B;SAC5B,CAAC,CAAC;QACH,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,oCAAoC;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACpD,4BAA4B;QAC5B,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAE5C,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,oBAAoB;QACpB,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;QAEhC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAClE,WAAW;QACb,CAAC,CAAC,CAAC;QAEH,aAAa;QACb,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1E,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEzG,cAAc;QACd,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAE3F,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Command } from 'commander';
|
|
2
|
-
import type { CommandDeps } from '../types';
|
|
2
|
+
import type { CommandDeps } from '../types.js';
|
|
3
3
|
declare function registerAutoCct(program: Command, deps: CommandDeps): void;
|
|
4
4
|
export default registerAutoCct;
|
|
5
5
|
//# sourceMappingURL=autoCct.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoCct.d.ts","sourceRoot":"","sources":["../../src/commands/autoCct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"autoCct.d.ts","sourceRoot":"","sources":["../../src/commands/autoCct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,iBAAS,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QAuX3D;AAED,eAAe,eAAe,CAAC"}
|
package/dist/commands/autoCct.js
CHANGED
|
@@ -1,49 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
40
|
-
const constants_1 = require("../constants");
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { CCT_DEFAULTS, DEVICE_DEFAULTS, VALIDATION_RANGES } from '../constants.js';
|
|
41
3
|
function registerAutoCct(program, deps) {
|
|
42
|
-
const { createController, asyncCommand, loadConfig } = deps;
|
|
4
|
+
const { createController, asyncCommand, loadConfig, findDevice } = deps;
|
|
43
5
|
program
|
|
44
|
-
.command('auto-cct')
|
|
45
|
-
.usage('[options]')
|
|
46
|
-
.description('Set CCT for
|
|
6
|
+
.command('auto-cct [device]')
|
|
7
|
+
.usage('[device] [options]')
|
|
8
|
+
.description('Set CCT for lights (or specific device) based on current location and time (geoip)')
|
|
47
9
|
.option('-u, --url <url>', 'WebSocket URL')
|
|
48
10
|
.option('-c, --client-id <id>', 'Client ID')
|
|
49
11
|
.option('-d, --debug', 'Enable debug mode')
|
|
@@ -52,10 +14,15 @@ function registerAutoCct(program, deps) {
|
|
|
52
14
|
.option('-x, --lon <longitude>', 'Manual longitude (-180 to 180)')
|
|
53
15
|
.option('-t, --time <time>', 'Manual time (ISO 8601 format, e.g., 2025-10-26T14:30:00)')
|
|
54
16
|
.option('-C, --curve <curve>', 'Curve type for CCT calculation (hann, wider-middle-small, wider-middle-medium, wider-middle-large, cie-daylight, sun-altitude, perez-daylight, default: hann)', 'hann')
|
|
55
|
-
.action(asyncCommand(async (
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
17
|
+
.action(asyncCommand(async (deviceQuery, optionsRaw) => {
|
|
18
|
+
// If the first arg is an object, it means no device was passed (commander behavior depends on exact signature match,
|
|
19
|
+
// but with optional [device], if omitted, first arg might be options? No, usually it's undefined for the arg.
|
|
20
|
+
// Let's verify standard commander behavior: action(arg, options, command)
|
|
21
|
+
// Actually, let's look at power.ts: async (deviceQuery: string | undefined, options: CommandOptions)
|
|
22
|
+
// If I change .command('auto-cct [device]'), then action receives (device, options).
|
|
23
|
+
// Since I'm typing optionsRaw explicitly, I should just use the second arg as options.
|
|
24
|
+
const { getLocationFromIP } = await import('../geoipUtil.js');
|
|
25
|
+
const { calculateCCT, CurveType, parseCurveType } = await import('../cctUtil.js');
|
|
59
26
|
const options = optionsRaw;
|
|
60
27
|
const controller = await createController(options.url, options.clientId, options.debug);
|
|
61
28
|
let lat;
|
|
@@ -65,7 +32,7 @@ function registerAutoCct(program, deps) {
|
|
|
65
32
|
if (options.time) {
|
|
66
33
|
time = new Date(options.time);
|
|
67
34
|
if (Number.isNaN(time.getTime())) {
|
|
68
|
-
console.error(
|
|
35
|
+
console.error(chalk.red('Invalid time format. Use ISO 8601 format (e.g., 2025-10-26T14:30:00)'));
|
|
69
36
|
process.exit(1);
|
|
70
37
|
}
|
|
71
38
|
}
|
|
@@ -76,7 +43,7 @@ function registerAutoCct(program, deps) {
|
|
|
76
43
|
curveType = parseCurveType(options.curve);
|
|
77
44
|
}
|
|
78
45
|
catch (error) {
|
|
79
|
-
console.error(
|
|
46
|
+
console.error(chalk.red(error.message));
|
|
80
47
|
process.exit(1);
|
|
81
48
|
}
|
|
82
49
|
}
|
|
@@ -88,7 +55,7 @@ function registerAutoCct(program, deps) {
|
|
|
88
55
|
curveType = parseCurveType(config.defaultCurve);
|
|
89
56
|
}
|
|
90
57
|
catch (_) {
|
|
91
|
-
console.warn(
|
|
58
|
+
console.warn(chalk.yellow(`Warning: Invalid default curve in config: ${config.defaultCurve}. Using 'hann' as fallback.`));
|
|
92
59
|
curveType = 'HANN';
|
|
93
60
|
}
|
|
94
61
|
}
|
|
@@ -103,11 +70,11 @@ function registerAutoCct(program, deps) {
|
|
|
103
70
|
lat = parseFloat(options.lat);
|
|
104
71
|
lon = parseFloat(options.lon);
|
|
105
72
|
if (Number.isNaN(lat) || lat < -90 || lat > 90) {
|
|
106
|
-
console.error(
|
|
73
|
+
console.error(chalk.red('Latitude must be between -90 and 90'));
|
|
107
74
|
process.exit(1);
|
|
108
75
|
}
|
|
109
76
|
if (Number.isNaN(lon) || lon < -180 || lon > 180) {
|
|
110
|
-
console.error(
|
|
77
|
+
console.error(chalk.red('Longitude must be between -180 and 180'));
|
|
111
78
|
process.exit(1);
|
|
112
79
|
}
|
|
113
80
|
source = 'manual';
|
|
@@ -138,7 +105,7 @@ function registerAutoCct(program, deps) {
|
|
|
138
105
|
}
|
|
139
106
|
const location = getLocationFromIP(ip);
|
|
140
107
|
if (!location || !location.ll) {
|
|
141
|
-
console.error(
|
|
108
|
+
console.error(chalk.red('Could not determine location from IP. Use --lat and --lon to specify manually, or set defaults with: amaran config --lat <lat> --lon <lon>'));
|
|
142
109
|
process.exit(1);
|
|
143
110
|
}
|
|
144
111
|
[lat, lon] = location.ll;
|
|
@@ -149,21 +116,22 @@ function registerAutoCct(program, deps) {
|
|
|
149
116
|
const clamp = (v, lo, hi) => Math.min(hi, Math.max(lo, v));
|
|
150
117
|
const minKRaw = cfg.cctMin;
|
|
151
118
|
const maxKRaw = cfg.cctMax;
|
|
119
|
+
const intensityMultMap = cfg.intensityMultiplier;
|
|
152
120
|
const minKCfg = typeof minKRaw === 'number' ? minKRaw : undefined;
|
|
153
121
|
const maxKCfg = typeof maxKRaw === 'number' ? maxKRaw : undefined;
|
|
154
122
|
const loK = minKCfg !== undefined
|
|
155
|
-
? clamp(minKCfg,
|
|
156
|
-
:
|
|
123
|
+
? clamp(minKCfg, VALIDATION_RANGES.cct.min, VALIDATION_RANGES.cct.max)
|
|
124
|
+
: CCT_DEFAULTS.cctMinK;
|
|
157
125
|
const hiK = maxKCfg !== undefined
|
|
158
|
-
? clamp(maxKCfg,
|
|
159
|
-
:
|
|
126
|
+
? clamp(maxKCfg, VALIDATION_RANGES.cct.min, VALIDATION_RANGES.cct.max)
|
|
127
|
+
: CCT_DEFAULTS.cctMaxK;
|
|
160
128
|
// For auto-cct defaults: use CCT defaults if not configured
|
|
161
129
|
const minPctRaw = cfg.intensityMin;
|
|
162
130
|
const maxPctRaw = cfg.intensityMax;
|
|
163
|
-
const minPctCfg = typeof minPctRaw === 'number' ? minPctRaw :
|
|
164
|
-
const maxPctCfg = typeof maxPctRaw === 'number' ? maxPctRaw :
|
|
165
|
-
const loPct = clamp(Math.min(minPctCfg, maxPctCfg),
|
|
166
|
-
const hiPct = clamp(Math.max(minPctCfg, maxPctCfg),
|
|
131
|
+
const minPctCfg = typeof minPctRaw === 'number' ? minPctRaw : CCT_DEFAULTS.intensityMinPct;
|
|
132
|
+
const maxPctCfg = typeof maxPctRaw === 'number' ? maxPctRaw : CCT_DEFAULTS.intensityMaxPct;
|
|
133
|
+
const loPct = clamp(Math.min(minPctCfg, maxPctCfg), VALIDATION_RANGES.intensity.min, VALIDATION_RANGES.intensity.max);
|
|
134
|
+
const hiPct = clamp(Math.max(minPctCfg, maxPctCfg), VALIDATION_RANGES.intensity.min, VALIDATION_RANGES.intensity.max);
|
|
167
135
|
const result = calculateCCT(lat, lon, time, {
|
|
168
136
|
cctMinK: Math.min(loK, hiK),
|
|
169
137
|
cctMaxK: Math.max(loK, hiK),
|
|
@@ -171,13 +139,25 @@ function registerAutoCct(program, deps) {
|
|
|
171
139
|
intensityMaxPct: hiPct,
|
|
172
140
|
}, CurveType[curveType]);
|
|
173
141
|
const percent = Math.round((result.intensity / 10) * 10) / 10;
|
|
174
|
-
console.log(
|
|
175
|
-
console.log(
|
|
176
|
-
console.log(
|
|
177
|
-
console.log(
|
|
178
|
-
|
|
142
|
+
console.log(chalk.blue(`Setting CCT to ${result.cct}K at ${percent}% for active lights`));
|
|
143
|
+
console.log(chalk.gray(` Location: ${lat.toFixed(4)}, ${lon.toFixed(4)} (${source})`));
|
|
144
|
+
console.log(chalk.gray(` Time: ${time.toISOString()}`));
|
|
145
|
+
console.log(chalk.gray(` Curve: ${curveType.toLowerCase()}`));
|
|
146
|
+
let candidateDevices = [];
|
|
147
|
+
if (deviceQuery && deviceQuery.toLowerCase() !== 'all') {
|
|
148
|
+
const device = findDevice(controller, deviceQuery);
|
|
149
|
+
if (!device) {
|
|
150
|
+
console.error(chalk.red(`Device "${deviceQuery}" not found`));
|
|
151
|
+
await controller.disconnect();
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
candidateDevices = [device];
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
candidateDevices = controller.getDevices?.() ?? [];
|
|
158
|
+
}
|
|
179
159
|
const lightPattern = /^[A-Z0-9]+-[A-Z0-9]+$/i;
|
|
180
|
-
const lightDevices =
|
|
160
|
+
const lightDevices = candidateDevices.filter((device) => {
|
|
181
161
|
if (!device || typeof device !== 'object') {
|
|
182
162
|
return false;
|
|
183
163
|
}
|
|
@@ -185,11 +165,11 @@ function registerAutoCct(program, deps) {
|
|
|
185
165
|
return typeof candidate.node_id === 'string' && lightPattern.test(candidate.node_id);
|
|
186
166
|
});
|
|
187
167
|
if (lightDevices.length === 0) {
|
|
188
|
-
console.log(
|
|
168
|
+
console.log(chalk.yellow('No light devices found; skipping auto CCT update.'));
|
|
189
169
|
await controller.disconnect();
|
|
190
170
|
return;
|
|
191
171
|
}
|
|
192
|
-
const waitMs =
|
|
172
|
+
const waitMs = DEVICE_DEFAULTS.statusCheckDelay;
|
|
193
173
|
const offDevices = [];
|
|
194
174
|
const activeDevices = [];
|
|
195
175
|
const hasSleep = (o) => typeof o === 'object' && o !== null && 'sleep' in o;
|
|
@@ -277,14 +257,14 @@ function registerAutoCct(program, deps) {
|
|
|
277
257
|
}
|
|
278
258
|
}
|
|
279
259
|
if (activeDevices.length === 0) {
|
|
280
|
-
console.log(
|
|
260
|
+
console.log(chalk.yellow('All discovered lights are off; nothing to update.'));
|
|
281
261
|
if (offDevices.length > 0) {
|
|
282
|
-
console.log(
|
|
262
|
+
console.log(chalk.gray(` Skipped ${offDevices.length} light(s) to avoid turning them on.`));
|
|
283
263
|
}
|
|
284
264
|
await controller.disconnect();
|
|
285
265
|
return;
|
|
286
266
|
}
|
|
287
|
-
console.log(
|
|
267
|
+
console.log(chalk.gray(` Updating ${activeDevices.length} light(s)${offDevices.length ? `, skipped ${offDevices.length} off light(s)` : ''}`));
|
|
288
268
|
for (let i = 0; i < activeDevices.length; i++) {
|
|
289
269
|
const device = activeDevices[i];
|
|
290
270
|
const displayName = typeof device.device_name === 'string'
|
|
@@ -294,8 +274,26 @@ function registerAutoCct(program, deps) {
|
|
|
294
274
|
: typeof device.id === 'string'
|
|
295
275
|
? device.id
|
|
296
276
|
: device.node_id;
|
|
297
|
-
|
|
298
|
-
|
|
277
|
+
let targetIntensity = percent;
|
|
278
|
+
let multiplierApplied = false;
|
|
279
|
+
// Check for intensity multiplier
|
|
280
|
+
if (intensityMultMap) {
|
|
281
|
+
// Check by ID and node_id
|
|
282
|
+
const mult = intensityMultMap[device.node_id] ?? (device.id ? intensityMultMap[device.id] : undefined);
|
|
283
|
+
if (mult !== undefined && typeof mult === 'number') {
|
|
284
|
+
targetIntensity = Math.round(percent * mult);
|
|
285
|
+
// Clamp to safe range [0, 100] just in case
|
|
286
|
+
targetIntensity = Math.max(0, Math.min(100, targetIntensity));
|
|
287
|
+
multiplierApplied = true;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (multiplierApplied) {
|
|
291
|
+
console.log(` Setting ${displayName} (${device.node_id}) to ${result.cct}K at ${targetIntensity}% (multiplied)`);
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
console.log(` Setting ${displayName} (${device.node_id}) to ${result.cct}K at ${targetIntensity}%`);
|
|
295
|
+
}
|
|
296
|
+
controller.setCCT(device.node_id, result.cct, result.intensity * (targetIntensity / percent));
|
|
299
297
|
if (i < activeDevices.length - 1) {
|
|
300
298
|
await new Promise((resolve) => setTimeout(resolve, waitMs));
|
|
301
299
|
}
|
|
@@ -303,5 +301,5 @@ function registerAutoCct(program, deps) {
|
|
|
303
301
|
await controller.disconnect();
|
|
304
302
|
}));
|
|
305
303
|
}
|
|
306
|
-
|
|
304
|
+
export default registerAutoCct;
|
|
307
305
|
//# sourceMappingURL=autoCct.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoCct.js","sourceRoot":"","sources":["../../src/commands/autoCct.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAE1B,4CAAgF;AAGhF,SAAS,eAAe,CAAC,OAAgB,EAAE,IAAiB;IAC1D,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAE5D,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,KAAK,CAAC,WAAW,CAAC;SAClB,WAAW,CAAC,mEAAmE,CAAC;SAChF,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC;SAC1C,MAAM,CAAC,sBAAsB,EAAE,WAAW,CAAC;SAC3C,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC;SAC1C,MAAM,CAAC,eAAe,EAAE,sCAAsC,CAAC;SAC/D,MAAM,CAAC,sBAAsB,EAAE,6BAA6B,CAAC;SAC7D,MAAM,CAAC,uBAAuB,EAAE,gCAAgC,CAAC;SACjE,MAAM,CAAC,mBAAmB,EAAE,0DAA0D,CAAC;SACvF,MAAM,CACL,qBAAqB,EACrB,+JAA+J,EAC/J,MAAM,CACP;SACA,MAAM,CACL,YAAY,CAAC,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;QACxC,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAA4B,CAAC;QAC9D,MAAM,EAAE,iBAAiB,EAAE,GAAG,wDAAa,cAAc,GAAC,CAAC;QAC3D,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,wDAAa,YAAY,GAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,UASf,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAExF,IAAI,GAAuB,CAAC;QAC5B,IAAI,GAAuB,CAAC;QAC5B,IAAI,IAAI,GAAS,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBACjC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC,CAAC;gBACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,SAAiC,CAAC;QACtC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,IAAI,UAAU,EAAE,CAAC;YACtB,uCAAuC;YACvC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,IAAI,MAAM,EAAE,YAAY,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAClD,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CACV,eAAK,CAAC,MAAM,CACV,6CAA6C,MAAM,CAAC,YAAY,6BAA6B,CAC9F,CACF,CAAC;oBACF,SAAS,GAAG,MAAM,CAAC;gBACrB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,MAAM,CAAC,CAAC,mBAAmB;YACzC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,MAAM,CAAC,CAAC,0CAA0C;QAChE,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC3D,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9B,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;gBAC/C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;gBACjD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,QAAQ,CAAC;QACpB,CAAC;aAAM,IAAI,UAAU,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAClC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;gBACnC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;oBACnE,GAAG,GAAG,SAAS,CAAC;oBAChB,GAAG,GAAG,SAAS,CAAC;oBAChB,MAAM,GAAG,QAAQ,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC3C,IAAI,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,mCAAmC,CAAC,CAAC;oBAC7D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC9B,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;gBACf,CAAC;gBAAC,OAAO,IAAI,EAAE,CAAC;oBACd,EAAE,GAAG,WAAW,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CACP,4IAA4I,CAC7I,CACF,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,UAAU,EAAE,GAAG,CAAC;QAC3B,CAAC;QAED,gFAAgF;QAChF,MAAM,GAAG,GAAG,CAAC,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAA4B,CAAC;QACtG,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAU,EAAE,EAAU,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAEnF,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;QAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;QAC3B,MAAM,OAAO,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,MAAM,OAAO,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,MAAM,GAAG,GACP,OAAO,KAAK,SAAS;YACnB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,6BAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,6BAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;YACtE,CAAC,CAAC,wBAAY,CAAC,OAAO,CAAC;QAC3B,MAAM,GAAG,GACP,OAAO,KAAK,SAAS;YACnB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,6BAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,6BAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;YACtE,CAAC,CAAC,wBAAY,CAAC,OAAO,CAAC;QAE3B,4DAA4D;QAC5D,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC;QACnC,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC;QACnC,MAAM,SAAS,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAY,CAAC,eAAe,CAAC;QAC3F,MAAM,SAAS,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAY,CAAC,eAAe,CAAC;QAC3F,MAAM,KAAK,GAAG,KAAK,CACjB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,EAC9B,6BAAiB,CAAC,SAAS,CAAC,GAAG,EAC/B,6BAAiB,CAAC,SAAS,CAAC,GAAG,CAChC,CAAC;QACF,MAAM,KAAK,GAAG,KAAK,CACjB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,EAC9B,6BAAiB,CAAC,SAAS,CAAC,GAAG,EAC/B,6BAAiB,CAAC,SAAS,CAAC,GAAG,CAChC,CAAC;QAEF,MAAM,MAAM,GAAG,YAAY,CACzB,GAAG,EACH,GAAG,EACH,IAAI,EACJ;YACE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;YAC3B,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;YAC3B,eAAe,EAAE,KAAK;YACtB,eAAe,EAAE,KAAK;SACvB,EACD,SAAS,CAAC,SAAS,CAAC,CACrB,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,GAAG,QAAQ,OAAO,qBAAqB,CAAC,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC;QAChD,MAAM,YAAY,GAAG,wBAAwB,CAAC;QAS9C,MAAM,YAAY,GAAI,OAAqB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAyB,EAAE;YACnF,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,SAAS,GAAG,MAA+B,CAAC;YAClD,OAAO,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,mDAAmD,CAAC,CAAC,CAAC;YAC/E,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,2BAAe,CAAC,gBAAgB,CAAC;QAChD,MAAM,UAAU,GAAkB,EAAE,CAAC;QACrC,MAAM,aAAa,GAAkB,EAAE,CAAC;QAExC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAA2B,EAAE,CACvD,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,IAAK,CAA6B,CAAC;QAEnF,MAAM,cAAc,GAAG,KAAK,EAAE,MAAc,EAAgC,EAAE;YAC5E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,GAAG,IAAI,CAAC;wBACf,OAAO,CAAC,SAAS,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC,EAAE,IAAI,CAAC,CAAC;gBAET,UAAU,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,CAAC,OAAgB,EAAE,QAAgB,EAAE,IAAc,EAAE,EAAE;oBAC9F,IAAI,OAAO;wBAAE,OAAO;oBACpB,OAAO,GAAG,IAAI,CAAC;oBACf,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,CAAC,SAAS,CAAC,CAAC;wBACnB,OAAO;oBACT,CAAC;oBACD,4DAA4D;oBAC5D,IAAI,IAAI,EAAE,CAAC;wBACT,qBAAqB;wBACrB,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;4BACnB,MAAM,CAAC,GAAI,IAA2B,CAAC,KAAK,CAAC;4BAC7C,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;gCAC3B,OAAO,CAAC,CAAC,CAAC,CAAC;gCACX,OAAO;4BACT,CAAC;4BACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gCAC1B,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gCACjB,OAAO;4BACT,CAAC;4BACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gCAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gCACjC,OAAO,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC;gCAClE,OAAO;4BACT,CAAC;wBACH,CAAC;wBACD,sCAAsC;wBACtC,MAAM,KAAK,GAAI,IAA2B,CAAC,IAAI,CAAC;wBAChD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;4BAC/B,OAAO,CAAC,KAAK,CAAC,CAAC;4BACf,OAAO;wBACT,CAAC;wBACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;4BAC9B,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;4BACrB,OAAO;wBACT,CAAC;wBACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;4BAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;4BACrC,OAAO,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC;4BAClE,OAAO;wBACT,CAAC;wBACD,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;4BACpB,MAAM,CAAC,GAAI,KAA4B,CAAC,KAAK,CAAC;4BAC9C,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;gCAC3B,OAAO,CAAC,CAAC,CAAC,CAAC;gCACX,OAAO;4BACT,CAAC;4BACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gCAC1B,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gCACjB,OAAO;4BACT,CAAC;4BACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gCAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gCACjC,OAAO,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC;gCAClE,OAAO;4BACT,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,OAAO,CAAC,SAAS,CAAC,CAAC;gBACrB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAiB,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBACpB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,mDAAmD,CAAC,CAAC,CAAC;YAC/E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,UAAU,CAAC,MAAM,qCAAqC,CAAC,CAAC,CAAC;YAC/F,CAAC;YACD,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CACR,cAAc,aAAa,CAAC,MAAM,YAChC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,UAAU,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,EACtE,EAAE,CACH,CACF,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,WAAW,GACf,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;gBACpC,CAAC,CAAC,MAAM,CAAC,WAAW;gBACpB,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;oBAC/B,CAAC,CAAC,MAAM,CAAC,IAAI;oBACb,CAAC,CAAC,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;wBAC7B,CAAC,CAAC,MAAM,CAAC,EAAE;wBACX,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW,KAAK,MAAM,CAAC,OAAO,QAAQ,MAAM,CAAC,GAAG,QAAQ,OAAO,GAAG,CAAC,CAAC;YAC7F,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAChE,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC,CAAC,CACH,CAAC;AACN,CAAC;AAED,kBAAe,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"autoCct.js","sourceRoot":"","sources":["../../src/commands/autoCct.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/cct.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Command } from 'commander';
|
|
2
|
-
import type { CommandDeps } from '../types';
|
|
2
|
+
import type { CommandDeps } from '../types.js';
|
|
3
3
|
export declare function registerCct(program: Command, deps: CommandDeps): void;
|
|
4
4
|
export default registerCct;
|
|
5
5
|
//# sourceMappingURL=cct.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cct.d.ts","sourceRoot":"","sources":["../../src/commands/cct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,
|
|
1
|
+
{"version":3,"file":"cct.d.ts","sourceRoot":"","sources":["../../src/commands/cct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,QA0F9D;AAED,eAAe,WAAW,CAAC"}
|