@revizly/node-av 5.2.2-beta.1
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/BUILD_LINUX.md +61 -0
- package/LICENSE.md +22 -0
- package/README.md +662 -0
- package/build_mac_local.sh +69 -0
- package/dist/api/audio-frame-buffer.d.ts +205 -0
- package/dist/api/audio-frame-buffer.js +287 -0
- package/dist/api/audio-frame-buffer.js.map +1 -0
- package/dist/api/bitstream-filter.d.ts +820 -0
- package/dist/api/bitstream-filter.js +1242 -0
- package/dist/api/bitstream-filter.js.map +1 -0
- package/dist/api/constants.d.ts +44 -0
- package/dist/api/constants.js +45 -0
- package/dist/api/constants.js.map +1 -0
- package/dist/api/data/test_av1.ivf +0 -0
- package/dist/api/data/test_h264.h264 +0 -0
- package/dist/api/data/test_hevc.h265 +0 -0
- package/dist/api/data/test_mjpeg.mjpeg +0 -0
- package/dist/api/data/test_vp8.ivf +0 -0
- package/dist/api/data/test_vp9.ivf +0 -0
- package/dist/api/decoder.d.ts +1088 -0
- package/dist/api/decoder.js +1775 -0
- package/dist/api/decoder.js.map +1 -0
- package/dist/api/demuxer.d.ts +1219 -0
- package/dist/api/demuxer.js +2081 -0
- package/dist/api/demuxer.js.map +1 -0
- package/dist/api/device.d.ts +586 -0
- package/dist/api/device.js +961 -0
- package/dist/api/device.js.map +1 -0
- package/dist/api/encoder.d.ts +1132 -0
- package/dist/api/encoder.js +1988 -0
- package/dist/api/encoder.js.map +1 -0
- package/dist/api/filter-complex.d.ts +821 -0
- package/dist/api/filter-complex.js +1604 -0
- package/dist/api/filter-complex.js.map +1 -0
- package/dist/api/filter-presets.d.ts +1286 -0
- package/dist/api/filter-presets.js +2152 -0
- package/dist/api/filter-presets.js.map +1 -0
- package/dist/api/filter.d.ts +1234 -0
- package/dist/api/filter.js +1976 -0
- package/dist/api/filter.js.map +1 -0
- package/dist/api/fmp4-stream.d.ts +426 -0
- package/dist/api/fmp4-stream.js +739 -0
- package/dist/api/fmp4-stream.js.map +1 -0
- package/dist/api/hardware.d.ts +651 -0
- package/dist/api/hardware.js +1260 -0
- package/dist/api/hardware.js.map +1 -0
- package/dist/api/index.d.ts +17 -0
- package/dist/api/index.js +32 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/io-stream.d.ts +307 -0
- package/dist/api/io-stream.js +282 -0
- package/dist/api/io-stream.js.map +1 -0
- package/dist/api/muxer.d.ts +957 -0
- package/dist/api/muxer.js +2002 -0
- package/dist/api/muxer.js.map +1 -0
- package/dist/api/pipeline.d.ts +607 -0
- package/dist/api/pipeline.js +1145 -0
- package/dist/api/pipeline.js.map +1 -0
- package/dist/api/utilities/async-queue.d.ts +120 -0
- package/dist/api/utilities/async-queue.js +211 -0
- package/dist/api/utilities/async-queue.js.map +1 -0
- package/dist/api/utilities/audio-sample.d.ts +117 -0
- package/dist/api/utilities/audio-sample.js +112 -0
- package/dist/api/utilities/audio-sample.js.map +1 -0
- package/dist/api/utilities/channel-layout.d.ts +76 -0
- package/dist/api/utilities/channel-layout.js +80 -0
- package/dist/api/utilities/channel-layout.js.map +1 -0
- package/dist/api/utilities/electron-shared-texture.d.ts +328 -0
- package/dist/api/utilities/electron-shared-texture.js +503 -0
- package/dist/api/utilities/electron-shared-texture.js.map +1 -0
- package/dist/api/utilities/image.d.ts +207 -0
- package/dist/api/utilities/image.js +213 -0
- package/dist/api/utilities/image.js.map +1 -0
- package/dist/api/utilities/index.d.ts +12 -0
- package/dist/api/utilities/index.js +25 -0
- package/dist/api/utilities/index.js.map +1 -0
- package/dist/api/utilities/media-type.d.ts +49 -0
- package/dist/api/utilities/media-type.js +53 -0
- package/dist/api/utilities/media-type.js.map +1 -0
- package/dist/api/utilities/pixel-format.d.ts +89 -0
- package/dist/api/utilities/pixel-format.js +97 -0
- package/dist/api/utilities/pixel-format.js.map +1 -0
- package/dist/api/utilities/sample-format.d.ts +129 -0
- package/dist/api/utilities/sample-format.js +141 -0
- package/dist/api/utilities/sample-format.js.map +1 -0
- package/dist/api/utilities/scheduler.d.ts +138 -0
- package/dist/api/utilities/scheduler.js +98 -0
- package/dist/api/utilities/scheduler.js.map +1 -0
- package/dist/api/utilities/streaming.d.ts +186 -0
- package/dist/api/utilities/streaming.js +309 -0
- package/dist/api/utilities/streaming.js.map +1 -0
- package/dist/api/utilities/timestamp.d.ts +193 -0
- package/dist/api/utilities/timestamp.js +206 -0
- package/dist/api/utilities/timestamp.js.map +1 -0
- package/dist/api/utilities/whisper-model.d.ts +310 -0
- package/dist/api/utilities/whisper-model.js +528 -0
- package/dist/api/utilities/whisper-model.js.map +1 -0
- package/dist/api/utils.d.ts +19 -0
- package/dist/api/utils.js +39 -0
- package/dist/api/utils.js.map +1 -0
- package/dist/api/whisper.d.ts +324 -0
- package/dist/api/whisper.js +362 -0
- package/dist/api/whisper.js.map +1 -0
- package/dist/constants/channel-layouts.d.ts +53 -0
- package/dist/constants/channel-layouts.js +57 -0
- package/dist/constants/channel-layouts.js.map +1 -0
- package/dist/constants/constants.d.ts +2325 -0
- package/dist/constants/constants.js +1887 -0
- package/dist/constants/constants.js.map +1 -0
- package/dist/constants/decoders.d.ts +633 -0
- package/dist/constants/decoders.js +641 -0
- package/dist/constants/decoders.js.map +1 -0
- package/dist/constants/encoders.d.ts +295 -0
- package/dist/constants/encoders.js +308 -0
- package/dist/constants/encoders.js.map +1 -0
- package/dist/constants/hardware.d.ts +26 -0
- package/dist/constants/hardware.js +27 -0
- package/dist/constants/hardware.js.map +1 -0
- package/dist/constants/index.d.ts +5 -0
- package/dist/constants/index.js +6 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/ffmpeg/index.d.ts +99 -0
- package/dist/ffmpeg/index.js +115 -0
- package/dist/ffmpeg/index.js.map +1 -0
- package/dist/ffmpeg/utils.d.ts +31 -0
- package/dist/ffmpeg/utils.js +68 -0
- package/dist/ffmpeg/utils.js.map +1 -0
- package/dist/ffmpeg/version.d.ts +6 -0
- package/dist/ffmpeg/version.js +7 -0
- package/dist/ffmpeg/version.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/audio-fifo.d.ts +399 -0
- package/dist/lib/audio-fifo.js +431 -0
- package/dist/lib/audio-fifo.js.map +1 -0
- package/dist/lib/binding.d.ts +228 -0
- package/dist/lib/binding.js +60 -0
- package/dist/lib/binding.js.map +1 -0
- package/dist/lib/bitstream-filter-context.d.ts +379 -0
- package/dist/lib/bitstream-filter-context.js +441 -0
- package/dist/lib/bitstream-filter-context.js.map +1 -0
- package/dist/lib/bitstream-filter.d.ts +140 -0
- package/dist/lib/bitstream-filter.js +154 -0
- package/dist/lib/bitstream-filter.js.map +1 -0
- package/dist/lib/codec-context.d.ts +1071 -0
- package/dist/lib/codec-context.js +1354 -0
- package/dist/lib/codec-context.js.map +1 -0
- package/dist/lib/codec-parameters.d.ts +616 -0
- package/dist/lib/codec-parameters.js +761 -0
- package/dist/lib/codec-parameters.js.map +1 -0
- package/dist/lib/codec-parser.d.ts +201 -0
- package/dist/lib/codec-parser.js +213 -0
- package/dist/lib/codec-parser.js.map +1 -0
- package/dist/lib/codec.d.ts +586 -0
- package/dist/lib/codec.js +713 -0
- package/dist/lib/codec.js.map +1 -0
- package/dist/lib/device.d.ts +291 -0
- package/dist/lib/device.js +324 -0
- package/dist/lib/device.js.map +1 -0
- package/dist/lib/dictionary.d.ts +333 -0
- package/dist/lib/dictionary.js +372 -0
- package/dist/lib/dictionary.js.map +1 -0
- package/dist/lib/error.d.ts +242 -0
- package/dist/lib/error.js +303 -0
- package/dist/lib/error.js.map +1 -0
- package/dist/lib/fifo.d.ts +416 -0
- package/dist/lib/fifo.js +453 -0
- package/dist/lib/fifo.js.map +1 -0
- package/dist/lib/filter-context.d.ts +712 -0
- package/dist/lib/filter-context.js +789 -0
- package/dist/lib/filter-context.js.map +1 -0
- package/dist/lib/filter-graph-segment.d.ts +160 -0
- package/dist/lib/filter-graph-segment.js +171 -0
- package/dist/lib/filter-graph-segment.js.map +1 -0
- package/dist/lib/filter-graph.d.ts +641 -0
- package/dist/lib/filter-graph.js +704 -0
- package/dist/lib/filter-graph.js.map +1 -0
- package/dist/lib/filter-inout.d.ts +198 -0
- package/dist/lib/filter-inout.js +257 -0
- package/dist/lib/filter-inout.js.map +1 -0
- package/dist/lib/filter.d.ts +243 -0
- package/dist/lib/filter.js +272 -0
- package/dist/lib/filter.js.map +1 -0
- package/dist/lib/format-context.d.ts +1254 -0
- package/dist/lib/format-context.js +1379 -0
- package/dist/lib/format-context.js.map +1 -0
- package/dist/lib/frame-utils.d.ts +116 -0
- package/dist/lib/frame-utils.js +98 -0
- package/dist/lib/frame-utils.js.map +1 -0
- package/dist/lib/frame.d.ts +1222 -0
- package/dist/lib/frame.js +1435 -0
- package/dist/lib/frame.js.map +1 -0
- package/dist/lib/hardware-device-context.d.ts +362 -0
- package/dist/lib/hardware-device-context.js +383 -0
- package/dist/lib/hardware-device-context.js.map +1 -0
- package/dist/lib/hardware-frames-context.d.ts +419 -0
- package/dist/lib/hardware-frames-context.js +477 -0
- package/dist/lib/hardware-frames-context.js.map +1 -0
- package/dist/lib/index.d.ts +35 -0
- package/dist/lib/index.js +60 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/input-format.d.ts +249 -0
- package/dist/lib/input-format.js +306 -0
- package/dist/lib/input-format.js.map +1 -0
- package/dist/lib/io-context.d.ts +696 -0
- package/dist/lib/io-context.js +769 -0
- package/dist/lib/io-context.js.map +1 -0
- package/dist/lib/log.d.ts +174 -0
- package/dist/lib/log.js +184 -0
- package/dist/lib/log.js.map +1 -0
- package/dist/lib/native-types.d.ts +946 -0
- package/dist/lib/native-types.js +2 -0
- package/dist/lib/native-types.js.map +1 -0
- package/dist/lib/option.d.ts +927 -0
- package/dist/lib/option.js +1583 -0
- package/dist/lib/option.js.map +1 -0
- package/dist/lib/output-format.d.ts +180 -0
- package/dist/lib/output-format.js +213 -0
- package/dist/lib/output-format.js.map +1 -0
- package/dist/lib/packet.d.ts +501 -0
- package/dist/lib/packet.js +590 -0
- package/dist/lib/packet.js.map +1 -0
- package/dist/lib/rational.d.ts +251 -0
- package/dist/lib/rational.js +278 -0
- package/dist/lib/rational.js.map +1 -0
- package/dist/lib/software-resample-context.d.ts +552 -0
- package/dist/lib/software-resample-context.js +592 -0
- package/dist/lib/software-resample-context.js.map +1 -0
- package/dist/lib/software-scale-context.d.ts +344 -0
- package/dist/lib/software-scale-context.js +366 -0
- package/dist/lib/software-scale-context.js.map +1 -0
- package/dist/lib/stream.d.ts +379 -0
- package/dist/lib/stream.js +526 -0
- package/dist/lib/stream.js.map +1 -0
- package/dist/lib/sync-queue.d.ts +179 -0
- package/dist/lib/sync-queue.js +197 -0
- package/dist/lib/sync-queue.js.map +1 -0
- package/dist/lib/types.d.ts +34 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utilities.d.ts +1127 -0
- package/dist/lib/utilities.js +1225 -0
- package/dist/lib/utilities.js.map +1 -0
- package/dist/utils/electron.d.ts +49 -0
- package/dist/utils/electron.js +63 -0
- package/dist/utils/electron.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/install/check.js +121 -0
- package/install/ffmpeg.js +66 -0
- package/jellyfin-ffmpeg.patch +181 -0
- package/package.json +129 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/lib/codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import type { AVPixelFormat, AVSampleFormat } from '../constants/constants.js';
|
|
2
|
+
/**
|
|
3
|
+
* Screen bounds rectangle
|
|
4
|
+
*/
|
|
5
|
+
export interface ScreenBounds {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Base device information
|
|
13
|
+
*/
|
|
14
|
+
export interface BaseDeviceInfo {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
isDefault: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Device information for video capture devices
|
|
21
|
+
*/
|
|
22
|
+
export interface VideoDeviceInfo extends BaseDeviceInfo {
|
|
23
|
+
type: 'video';
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Device information for audio capture devices
|
|
27
|
+
*/
|
|
28
|
+
export interface AudioDeviceInfo extends BaseDeviceInfo {
|
|
29
|
+
type: 'audio';
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Device information for screen capture devices
|
|
33
|
+
*/
|
|
34
|
+
export interface ScreenDeviceInfo extends BaseDeviceInfo {
|
|
35
|
+
type: 'screen';
|
|
36
|
+
bounds: ScreenBounds;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Device information for capture devices
|
|
40
|
+
*/
|
|
41
|
+
export type DeviceInfo = VideoDeviceInfo | AudioDeviceInfo | ScreenDeviceInfo;
|
|
42
|
+
/**
|
|
43
|
+
* Device capture mode
|
|
44
|
+
*/
|
|
45
|
+
export interface DeviceMode {
|
|
46
|
+
width: number;
|
|
47
|
+
height: number;
|
|
48
|
+
minFrameRate: number;
|
|
49
|
+
maxFrameRate: number;
|
|
50
|
+
pixelFormat: AVPixelFormat;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Audio device capture mode
|
|
54
|
+
*/
|
|
55
|
+
export interface AudioDeviceMode {
|
|
56
|
+
sampleRate: number;
|
|
57
|
+
channels: number;
|
|
58
|
+
sampleFormat: AVSampleFormat;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Low-level device enumeration and format detection.
|
|
62
|
+
*
|
|
63
|
+
* Provides direct access to system capture devices (cameras, microphones)
|
|
64
|
+
* and platform-specific input format names for FFmpeg.
|
|
65
|
+
*
|
|
66
|
+
* Direct mapping to platform-specific APIs:
|
|
67
|
+
* - macOS: AVFoundation
|
|
68
|
+
* - Linux: V4L2/ALSA
|
|
69
|
+
* - Windows: DirectShow
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* import { Device } from 'node-av/lib';
|
|
74
|
+
*
|
|
75
|
+
* // List all capture devices
|
|
76
|
+
* const devices = await Device.list();
|
|
77
|
+
* for (const device of devices) {
|
|
78
|
+
* console.log(`[${device.type}] ${device.name}: ${device.description}`);
|
|
79
|
+
* }
|
|
80
|
+
*
|
|
81
|
+
* // Get platform-specific format names
|
|
82
|
+
* console.log(`Video format: ${Device.getVideoFormat()}`);
|
|
83
|
+
* console.log(`Audio format: ${Device.getAudioFormat()}`);
|
|
84
|
+
* console.log(`Screen format: ${Device.getScreenFormat()}`);
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* @see {@link DeviceInfo} For device structure
|
|
88
|
+
*/
|
|
89
|
+
export declare class Device {
|
|
90
|
+
/**
|
|
91
|
+
* List all available capture devices.
|
|
92
|
+
*
|
|
93
|
+
* Enumerates video and audio capture devices on the system.
|
|
94
|
+
* Uses platform-specific APIs for device discovery.
|
|
95
|
+
*
|
|
96
|
+
* @returns Array of device information
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```typescript
|
|
100
|
+
* const devices = await Device.list();
|
|
101
|
+
* const cameras = devices.filter(d => d.type === 'video');
|
|
102
|
+
* const microphones = devices.filter(d => d.type === 'audio');
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
static list(): Promise<DeviceInfo[]>;
|
|
106
|
+
/**
|
|
107
|
+
* List all available capture devices synchronously.
|
|
108
|
+
*
|
|
109
|
+
* @returns Array of device information
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* const devices = Device.listSync();
|
|
114
|
+
* ```
|
|
115
|
+
*
|
|
116
|
+
* @see {@link list} For async version
|
|
117
|
+
*/
|
|
118
|
+
static listSync(): DeviceInfo[];
|
|
119
|
+
/**
|
|
120
|
+
* Query supported capture modes for a video device.
|
|
121
|
+
*
|
|
122
|
+
* Returns supported resolutions and frame rate ranges for the specified device.
|
|
123
|
+
* Modes are sorted descending by resolution (area), then by max frame rate.
|
|
124
|
+
*
|
|
125
|
+
* @param deviceName - Device name as returned by `list()` (e.g. uniqueID on macOS, /dev/video0 on Linux)
|
|
126
|
+
*
|
|
127
|
+
* @returns Array of supported device modes
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```typescript
|
|
131
|
+
* const devices = await Device.list();
|
|
132
|
+
* const camera = devices.find(d => d.type === 'video');
|
|
133
|
+
* if (camera) {
|
|
134
|
+
* const modes = await Device.modes(camera.name);
|
|
135
|
+
* console.log('Supported modes:', modes);
|
|
136
|
+
* }
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
static modes(deviceName: string): Promise<DeviceMode[]>;
|
|
140
|
+
/**
|
|
141
|
+
* Query supported capture modes for a video device synchronously.
|
|
142
|
+
*
|
|
143
|
+
* @param deviceName - Device name as returned by `listSync()`
|
|
144
|
+
*
|
|
145
|
+
* @returns Array of supported device modes
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```typescript
|
|
149
|
+
* const devices = Device.listSync();
|
|
150
|
+
* const camera = devices.find(d => d.type === 'video');
|
|
151
|
+
* if (camera) {
|
|
152
|
+
* const modes = Device.modesSync(camera.name);
|
|
153
|
+
* console.log('Supported modes:', modes);
|
|
154
|
+
* }
|
|
155
|
+
* ```
|
|
156
|
+
*
|
|
157
|
+
* @see {@link modes} For async version
|
|
158
|
+
*/
|
|
159
|
+
static modesSync(deviceName: string): DeviceMode[];
|
|
160
|
+
/**
|
|
161
|
+
* Query supported audio capture modes for an audio device.
|
|
162
|
+
*
|
|
163
|
+
* Returns supported sample rates, channel counts and sample formats for the specified device.
|
|
164
|
+
* Modes are sorted descending by sample rate, then by channel count.
|
|
165
|
+
*
|
|
166
|
+
* @param deviceName - Device name as returned by `list()` (e.g. uniqueID on macOS, hw:0 on Linux)
|
|
167
|
+
*
|
|
168
|
+
* @returns Array of supported audio device modes
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* const devices = await Device.list();
|
|
173
|
+
* const mic = devices.find(d => d.type === 'audio');
|
|
174
|
+
* if (mic) {
|
|
175
|
+
* const modes = await Device.audioModes(mic.name);
|
|
176
|
+
* console.log('Supported audio modes:', modes);
|
|
177
|
+
* }
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
static audioModes(deviceName: string): Promise<AudioDeviceMode[]>;
|
|
181
|
+
/**
|
|
182
|
+
* Query supported audio capture modes for an audio device synchronously.
|
|
183
|
+
*
|
|
184
|
+
* @param deviceName - Device name as returned by `listSync()`
|
|
185
|
+
*
|
|
186
|
+
* @returns Array of supported audio device modes
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* ```typescript
|
|
190
|
+
* const devices = Device.listSync();
|
|
191
|
+
* const mic = devices.find(d => d.type === 'audio');
|
|
192
|
+
* if (mic) {
|
|
193
|
+
* const modes = Device.audioModesSync(mic.name);
|
|
194
|
+
* console.log('Supported audio modes:', modes);
|
|
195
|
+
* }
|
|
196
|
+
* ```
|
|
197
|
+
*
|
|
198
|
+
* @see {@link audioModes} For async version
|
|
199
|
+
*/
|
|
200
|
+
static audioModesSync(deviceName: string): AudioDeviceMode[];
|
|
201
|
+
/**
|
|
202
|
+
* Get platform-specific video input format name.
|
|
203
|
+
*
|
|
204
|
+
* @returns Format name for FFmpeg input
|
|
205
|
+
*
|
|
206
|
+
* | Platform | Format |
|
|
207
|
+
* |----------|--------|
|
|
208
|
+
* | macOS | avfoundation |
|
|
209
|
+
* | Linux | v4l2 |
|
|
210
|
+
* | Windows | dshow |
|
|
211
|
+
*
|
|
212
|
+
* @example
|
|
213
|
+
* ```typescript
|
|
214
|
+
* const format = Device.getVideoFormat();
|
|
215
|
+
* // Use with Demuxer.open(deviceName, { format })
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
218
|
+
static getVideoFormat(): string;
|
|
219
|
+
/**
|
|
220
|
+
* Get platform-specific audio input format name.
|
|
221
|
+
*
|
|
222
|
+
* @returns Format name for FFmpeg input
|
|
223
|
+
*
|
|
224
|
+
* | Platform | Format |
|
|
225
|
+
* |----------|--------|
|
|
226
|
+
* | macOS | avfoundation |
|
|
227
|
+
* | Linux | alsa |
|
|
228
|
+
* | Windows | dshow |
|
|
229
|
+
*
|
|
230
|
+
* @example
|
|
231
|
+
* ```typescript
|
|
232
|
+
* const format = Device.getAudioFormat(); // 'avfoundation' on macOS
|
|
233
|
+
* ```
|
|
234
|
+
*/
|
|
235
|
+
static getAudioFormat(): string;
|
|
236
|
+
/**
|
|
237
|
+
* Get platform-specific screen capture format name.
|
|
238
|
+
*
|
|
239
|
+
* @returns Format name for FFmpeg input
|
|
240
|
+
*
|
|
241
|
+
* | Platform | Format |
|
|
242
|
+
* |----------|--------|
|
|
243
|
+
* | macOS | avfoundation |
|
|
244
|
+
* | Linux | x11grab |
|
|
245
|
+
* | Windows | gdigrab |
|
|
246
|
+
*
|
|
247
|
+
* @example
|
|
248
|
+
* ```typescript
|
|
249
|
+
* const format = Device.getScreenFormat(); // 'avfoundation' on macOS
|
|
250
|
+
* ```
|
|
251
|
+
*/
|
|
252
|
+
static getScreenFormat(): string;
|
|
253
|
+
/**
|
|
254
|
+
* Check if the application has screen capture permission (macOS only).
|
|
255
|
+
*
|
|
256
|
+
* Uses `CGPreflightScreenCaptureAccess()` on macOS 11+.
|
|
257
|
+
* Always returns `true` on Linux, Windows, and macOS < 11.
|
|
258
|
+
*
|
|
259
|
+
* @returns `true` if screen capture is permitted
|
|
260
|
+
*
|
|
261
|
+
* @example
|
|
262
|
+
* ```typescript
|
|
263
|
+
* if (Device.hasScreenCapturePermission()) {
|
|
264
|
+
* console.log('Screen capture is permitted');
|
|
265
|
+
* } else {
|
|
266
|
+
* console.log('Screen capture permission not granted');
|
|
267
|
+
* }
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
static hasScreenCapturePermission(): boolean;
|
|
271
|
+
/**
|
|
272
|
+
* Request screen capture permission from the user (macOS only).
|
|
273
|
+
*
|
|
274
|
+
* Uses `CGRequestScreenCaptureAccess()` on macOS 11+.
|
|
275
|
+
* This will trigger the system permission dialog if not already granted.
|
|
276
|
+
* Always returns `true` on Linux, Windows, and macOS < 11.
|
|
277
|
+
*
|
|
278
|
+
* @returns `true` if permission was already granted (does not wait for dialog)
|
|
279
|
+
*
|
|
280
|
+
* @example
|
|
281
|
+
* ```typescript
|
|
282
|
+
* const granted = Device.requestScreenCaptureAccess();
|
|
283
|
+
* if (granted) {
|
|
284
|
+
* console.log('Screen capture permission already granted');
|
|
285
|
+
* } else {
|
|
286
|
+
* console.log('Screen capture permission dialog shown to user');
|
|
287
|
+
* }
|
|
288
|
+
* ```
|
|
289
|
+
*/
|
|
290
|
+
static requestScreenCaptureAccess(): boolean;
|
|
291
|
+
}
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import { bindings } from './binding.js';
|
|
2
|
+
/**
|
|
3
|
+
* Low-level device enumeration and format detection.
|
|
4
|
+
*
|
|
5
|
+
* Provides direct access to system capture devices (cameras, microphones)
|
|
6
|
+
* and platform-specific input format names for FFmpeg.
|
|
7
|
+
*
|
|
8
|
+
* Direct mapping to platform-specific APIs:
|
|
9
|
+
* - macOS: AVFoundation
|
|
10
|
+
* - Linux: V4L2/ALSA
|
|
11
|
+
* - Windows: DirectShow
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { Device } from 'node-av/lib';
|
|
16
|
+
*
|
|
17
|
+
* // List all capture devices
|
|
18
|
+
* const devices = await Device.list();
|
|
19
|
+
* for (const device of devices) {
|
|
20
|
+
* console.log(`[${device.type}] ${device.name}: ${device.description}`);
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* // Get platform-specific format names
|
|
24
|
+
* console.log(`Video format: ${Device.getVideoFormat()}`);
|
|
25
|
+
* console.log(`Audio format: ${Device.getAudioFormat()}`);
|
|
26
|
+
* console.log(`Screen format: ${Device.getScreenFormat()}`);
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @see {@link DeviceInfo} For device structure
|
|
30
|
+
*/
|
|
31
|
+
export class Device {
|
|
32
|
+
/**
|
|
33
|
+
* List all available capture devices.
|
|
34
|
+
*
|
|
35
|
+
* Enumerates video and audio capture devices on the system.
|
|
36
|
+
* Uses platform-specific APIs for device discovery.
|
|
37
|
+
*
|
|
38
|
+
* @returns Array of device information
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const devices = await Device.list();
|
|
43
|
+
* const cameras = devices.filter(d => d.type === 'video');
|
|
44
|
+
* const microphones = devices.filter(d => d.type === 'audio');
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
static async list() {
|
|
48
|
+
const nativeDevices = await bindings.Device.listDevices();
|
|
49
|
+
return nativeDevices.map((d) => {
|
|
50
|
+
if (d.type === 'screen') {
|
|
51
|
+
return {
|
|
52
|
+
name: d.name,
|
|
53
|
+
description: d.description,
|
|
54
|
+
type: 'screen',
|
|
55
|
+
isDefault: d.isDefault,
|
|
56
|
+
bounds: {
|
|
57
|
+
x: d.screenX ?? 0,
|
|
58
|
+
y: d.screenY ?? 0,
|
|
59
|
+
width: d.screenWidth ?? 0,
|
|
60
|
+
height: d.screenHeight ?? 0,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
name: d.name,
|
|
66
|
+
description: d.description,
|
|
67
|
+
type: d.type,
|
|
68
|
+
isDefault: d.isDefault,
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* List all available capture devices synchronously.
|
|
74
|
+
*
|
|
75
|
+
* @returns Array of device information
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* const devices = Device.listSync();
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
82
|
+
* @see {@link list} For async version
|
|
83
|
+
*/
|
|
84
|
+
static listSync() {
|
|
85
|
+
const nativeDevices = bindings.Device.listDevicesSync();
|
|
86
|
+
return nativeDevices.map((d) => {
|
|
87
|
+
if (d.type === 'screen') {
|
|
88
|
+
return {
|
|
89
|
+
name: d.name,
|
|
90
|
+
description: d.description,
|
|
91
|
+
type: 'screen',
|
|
92
|
+
isDefault: d.isDefault,
|
|
93
|
+
bounds: {
|
|
94
|
+
x: d.screenX ?? 0,
|
|
95
|
+
y: d.screenY ?? 0,
|
|
96
|
+
width: d.screenWidth ?? 0,
|
|
97
|
+
height: d.screenHeight ?? 0,
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
name: d.name,
|
|
103
|
+
description: d.description,
|
|
104
|
+
type: d.type,
|
|
105
|
+
isDefault: d.isDefault,
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Query supported capture modes for a video device.
|
|
111
|
+
*
|
|
112
|
+
* Returns supported resolutions and frame rate ranges for the specified device.
|
|
113
|
+
* Modes are sorted descending by resolution (area), then by max frame rate.
|
|
114
|
+
*
|
|
115
|
+
* @param deviceName - Device name as returned by `list()` (e.g. uniqueID on macOS, /dev/video0 on Linux)
|
|
116
|
+
*
|
|
117
|
+
* @returns Array of supported device modes
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* const devices = await Device.list();
|
|
122
|
+
* const camera = devices.find(d => d.type === 'video');
|
|
123
|
+
* if (camera) {
|
|
124
|
+
* const modes = await Device.modes(camera.name);
|
|
125
|
+
* console.log('Supported modes:', modes);
|
|
126
|
+
* }
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
static async modes(deviceName) {
|
|
130
|
+
const nativeModes = await bindings.Device.listDeviceModes(deviceName);
|
|
131
|
+
return nativeModes.map((m) => ({
|
|
132
|
+
width: m.width,
|
|
133
|
+
height: m.height,
|
|
134
|
+
minFrameRate: m.minFrameRate,
|
|
135
|
+
maxFrameRate: m.maxFrameRate,
|
|
136
|
+
pixelFormat: m.pixelFormat,
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Query supported capture modes for a video device synchronously.
|
|
141
|
+
*
|
|
142
|
+
* @param deviceName - Device name as returned by `listSync()`
|
|
143
|
+
*
|
|
144
|
+
* @returns Array of supported device modes
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```typescript
|
|
148
|
+
* const devices = Device.listSync();
|
|
149
|
+
* const camera = devices.find(d => d.type === 'video');
|
|
150
|
+
* if (camera) {
|
|
151
|
+
* const modes = Device.modesSync(camera.name);
|
|
152
|
+
* console.log('Supported modes:', modes);
|
|
153
|
+
* }
|
|
154
|
+
* ```
|
|
155
|
+
*
|
|
156
|
+
* @see {@link modes} For async version
|
|
157
|
+
*/
|
|
158
|
+
static modesSync(deviceName) {
|
|
159
|
+
const nativeModes = bindings.Device.listDeviceModesSync(deviceName);
|
|
160
|
+
return nativeModes.map((m) => ({
|
|
161
|
+
width: m.width,
|
|
162
|
+
height: m.height,
|
|
163
|
+
minFrameRate: m.minFrameRate,
|
|
164
|
+
maxFrameRate: m.maxFrameRate,
|
|
165
|
+
pixelFormat: m.pixelFormat,
|
|
166
|
+
}));
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Query supported audio capture modes for an audio device.
|
|
170
|
+
*
|
|
171
|
+
* Returns supported sample rates, channel counts and sample formats for the specified device.
|
|
172
|
+
* Modes are sorted descending by sample rate, then by channel count.
|
|
173
|
+
*
|
|
174
|
+
* @param deviceName - Device name as returned by `list()` (e.g. uniqueID on macOS, hw:0 on Linux)
|
|
175
|
+
*
|
|
176
|
+
* @returns Array of supported audio device modes
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```typescript
|
|
180
|
+
* const devices = await Device.list();
|
|
181
|
+
* const mic = devices.find(d => d.type === 'audio');
|
|
182
|
+
* if (mic) {
|
|
183
|
+
* const modes = await Device.audioModes(mic.name);
|
|
184
|
+
* console.log('Supported audio modes:', modes);
|
|
185
|
+
* }
|
|
186
|
+
* ```
|
|
187
|
+
*/
|
|
188
|
+
static async audioModes(deviceName) {
|
|
189
|
+
const nativeModes = await bindings.Device.listAudioDeviceModes(deviceName);
|
|
190
|
+
return nativeModes.map((m) => ({
|
|
191
|
+
sampleRate: m.sampleRate,
|
|
192
|
+
channels: m.channels,
|
|
193
|
+
sampleFormat: m.sampleFormat,
|
|
194
|
+
}));
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Query supported audio capture modes for an audio device synchronously.
|
|
198
|
+
*
|
|
199
|
+
* @param deviceName - Device name as returned by `listSync()`
|
|
200
|
+
*
|
|
201
|
+
* @returns Array of supported audio device modes
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```typescript
|
|
205
|
+
* const devices = Device.listSync();
|
|
206
|
+
* const mic = devices.find(d => d.type === 'audio');
|
|
207
|
+
* if (mic) {
|
|
208
|
+
* const modes = Device.audioModesSync(mic.name);
|
|
209
|
+
* console.log('Supported audio modes:', modes);
|
|
210
|
+
* }
|
|
211
|
+
* ```
|
|
212
|
+
*
|
|
213
|
+
* @see {@link audioModes} For async version
|
|
214
|
+
*/
|
|
215
|
+
static audioModesSync(deviceName) {
|
|
216
|
+
const nativeModes = bindings.Device.listAudioDeviceModesSync(deviceName);
|
|
217
|
+
return nativeModes.map((m) => ({
|
|
218
|
+
sampleRate: m.sampleRate,
|
|
219
|
+
channels: m.channels,
|
|
220
|
+
sampleFormat: m.sampleFormat,
|
|
221
|
+
}));
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Get platform-specific video input format name.
|
|
225
|
+
*
|
|
226
|
+
* @returns Format name for FFmpeg input
|
|
227
|
+
*
|
|
228
|
+
* | Platform | Format |
|
|
229
|
+
* |----------|--------|
|
|
230
|
+
* | macOS | avfoundation |
|
|
231
|
+
* | Linux | v4l2 |
|
|
232
|
+
* | Windows | dshow |
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```typescript
|
|
236
|
+
* const format = Device.getVideoFormat();
|
|
237
|
+
* // Use with Demuxer.open(deviceName, { format })
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
static getVideoFormat() {
|
|
241
|
+
return bindings.Device.getVideoFormat();
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Get platform-specific audio input format name.
|
|
245
|
+
*
|
|
246
|
+
* @returns Format name for FFmpeg input
|
|
247
|
+
*
|
|
248
|
+
* | Platform | Format |
|
|
249
|
+
* |----------|--------|
|
|
250
|
+
* | macOS | avfoundation |
|
|
251
|
+
* | Linux | alsa |
|
|
252
|
+
* | Windows | dshow |
|
|
253
|
+
*
|
|
254
|
+
* @example
|
|
255
|
+
* ```typescript
|
|
256
|
+
* const format = Device.getAudioFormat(); // 'avfoundation' on macOS
|
|
257
|
+
* ```
|
|
258
|
+
*/
|
|
259
|
+
static getAudioFormat() {
|
|
260
|
+
return bindings.Device.getAudioFormat();
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Get platform-specific screen capture format name.
|
|
264
|
+
*
|
|
265
|
+
* @returns Format name for FFmpeg input
|
|
266
|
+
*
|
|
267
|
+
* | Platform | Format |
|
|
268
|
+
* |----------|--------|
|
|
269
|
+
* | macOS | avfoundation |
|
|
270
|
+
* | Linux | x11grab |
|
|
271
|
+
* | Windows | gdigrab |
|
|
272
|
+
*
|
|
273
|
+
* @example
|
|
274
|
+
* ```typescript
|
|
275
|
+
* const format = Device.getScreenFormat(); // 'avfoundation' on macOS
|
|
276
|
+
* ```
|
|
277
|
+
*/
|
|
278
|
+
static getScreenFormat() {
|
|
279
|
+
return bindings.Device.getScreenFormat();
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Check if the application has screen capture permission (macOS only).
|
|
283
|
+
*
|
|
284
|
+
* Uses `CGPreflightScreenCaptureAccess()` on macOS 11+.
|
|
285
|
+
* Always returns `true` on Linux, Windows, and macOS < 11.
|
|
286
|
+
*
|
|
287
|
+
* @returns `true` if screen capture is permitted
|
|
288
|
+
*
|
|
289
|
+
* @example
|
|
290
|
+
* ```typescript
|
|
291
|
+
* if (Device.hasScreenCapturePermission()) {
|
|
292
|
+
* console.log('Screen capture is permitted');
|
|
293
|
+
* } else {
|
|
294
|
+
* console.log('Screen capture permission not granted');
|
|
295
|
+
* }
|
|
296
|
+
* ```
|
|
297
|
+
*/
|
|
298
|
+
static hasScreenCapturePermission() {
|
|
299
|
+
return bindings.Device.hasScreenCapturePermission();
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Request screen capture permission from the user (macOS only).
|
|
303
|
+
*
|
|
304
|
+
* Uses `CGRequestScreenCaptureAccess()` on macOS 11+.
|
|
305
|
+
* This will trigger the system permission dialog if not already granted.
|
|
306
|
+
* Always returns `true` on Linux, Windows, and macOS < 11.
|
|
307
|
+
*
|
|
308
|
+
* @returns `true` if permission was already granted (does not wait for dialog)
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* ```typescript
|
|
312
|
+
* const granted = Device.requestScreenCaptureAccess();
|
|
313
|
+
* if (granted) {
|
|
314
|
+
* console.log('Screen capture permission already granted');
|
|
315
|
+
* } else {
|
|
316
|
+
* console.log('Screen capture permission dialog shown to user');
|
|
317
|
+
* }
|
|
318
|
+
* ```
|
|
319
|
+
*/
|
|
320
|
+
static requestScreenCaptureAccess() {
|
|
321
|
+
return bindings.Device.requestScreenCaptureAccess();
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/lib/device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAuExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,OAAO,MAAM;IACjB;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI;QACf,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1D,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,CAAmB,EAAc,EAAE;YAC3D,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO;oBACL,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,IAAI,EAAE,QAAQ;oBACd,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,MAAM,EAAE;wBACN,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC;wBACjB,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC;wBACjB,KAAK,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC;wBACzB,MAAM,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC;qBAC5B;iBACF,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,SAAS,EAAE,CAAC,CAAC,SAAS;aACvB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,QAAQ;QACb,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QACxD,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,CAAmB,EAAc,EAAE;YAC3D,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO;oBACL,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,IAAI,EAAE,QAAQ;oBACd,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,MAAM,EAAE;wBACN,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC;wBACjB,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC;wBACjB,KAAK,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC;wBACzB,MAAM,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC;qBAC5B;iBACF,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,SAAS,EAAE,CAAC,CAAC,SAAS;aACvB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAkB;QACnC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACtE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC;YAC/C,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,SAAS,CAAC,UAAkB;QACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACpE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC;YAC/C,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,UAAkB;QACxC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC3E,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAwB,EAAE,EAAE,CAAC,CAAC;YACpD,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,YAAY,EAAE,CAAC,CAAC,YAAY;SAC7B,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,cAAc,CAAC,UAAkB;QACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QACzE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAwB,EAAE,EAAE,CAAC,CAAC;YACpD,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,YAAY,EAAE,CAAC,CAAC,YAAY;SAC7B,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,cAAc;QACnB,OAAO,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IAC1C,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,cAAc;QACnB,OAAO,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IAC1C,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,eAAe;QACpB,OAAO,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;IAC3C,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,0BAA0B;QAC/B,OAAO,QAAQ,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;IACtD,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,0BAA0B;QAC/B,OAAO,QAAQ,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;IACtD,CAAC;CACF"}
|