meeting-record 0.1.2 → 0.2.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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # meeting-record for Node.js
2
2
 
3
- [Full documentation](https://github.com/hoangvvo/meeting-record#readme)
3
+ System-audio and microphone capture with meeting detection for macOS and Windows.
4
4
 
5
5
  ## Install
6
6
 
@@ -8,89 +8,142 @@
8
8
  npm install meeting-record
9
9
  ```
10
10
 
11
- ## Usage
11
+ - Requires Node.js 22.13+ (22.x) or 24+.
12
+ - See the [platform requirements and permissions](https://github.com/hoangvvo/meeting-record#requirements) for app configuration.
13
+
14
+ ## Capture
12
15
 
13
16
  ```ts
14
- import * as MeetingRecord from "meeting-record";
15
-
16
- // Request system audio permission to record the whole system mix.
17
- await MeetingRecord.permissions.request("system-audio");
18
- // Request microphone permission to record the user voice.
19
- await MeetingRecord.permissions.request("microphone");
20
- // Request accessibility permission to read meeting titles and URLs for detection.
21
- await MeetingRecord.permissions.request("accessibility");
22
-
23
- // Watch for meetings starting, changing, and ending.
24
- MeetingRecord.meetings.on("started", (meeting) => {
25
- console.log("meeting started", meeting);
26
- });
27
- MeetingRecord.meetings.on("updated", (meeting) => {
28
- console.log("meeting updated", meeting);
29
- });
30
- MeetingRecord.meetings.on("ended", (meeting) => {
31
- console.log("meeting ended", meeting);
32
- });
33
- MeetingRecord.meetings.watch();
34
-
35
- // Or scan for active meetings at any time.
36
- const meeting = MeetingRecord.meetings.scan().find((item) => item.shouldRecord);
37
- if (!meeting) throw new Error("no active meeting");
38
-
39
- // Start recording the meeting process and its audio helpers.
40
- // Use `{ type: "system" }` instead to record the whole system mix.
41
- const recording = await MeetingRecord.capture.start(
42
- { type: "process", pid: meeting.pid },
43
- { microphone: "default" },
44
- );
17
+ import { setTimeout as delay } from "node:timers/promises";
18
+ import { capture, permissions, Permission } from "meeting-record";
19
+
20
+ await permissions.request(Permission.SystemAudio);
21
+ const recording = await capture.start({ type: "system" });
22
+
23
+ // Stop after ten seconds; keep reading until the stream ends.
24
+ const stopped = delay(10_000).then(() => recording.stopRecording());
25
+ for await (const chunk of recording.systemAudio) {
26
+ // Raw float32 PCM, with the format and capture time of this packet.
27
+ console.log(chunk.pcm, chunk.hostTimeNs, chunk.sampleRate, chunk.channels);
28
+ }
29
+ await stopped;
30
+ ```
45
31
 
46
- recording.on("interrupted", () =>
47
- console.warn("audio device changed; recovering"),
48
- );
49
- recording.on("recovered", () => console.log("capture recovered"));
50
- recording.on("failed", (error) => console.error("capture failed", error));
51
-
52
- // Process captured application or system audio.
53
- recording.systemAudio.on("data", (chunk) => {
54
- console.log(chunk.length, chunk.hostTimeNs, chunk.sampleRate, chunk.channels);
55
- });
56
- recording.systemAudio.on("drop", (samples) => console.warn("dropped", samples));
57
- recording.systemAudio.on("format", (format) =>
58
- console.log("new format", format),
59
- );
32
+ | Target | Value passed to `capture.start()` |
33
+ | ----------------------------- | --------------------------------- |
34
+ | System audio | `{ type: "system" }` |
35
+ | One app and its audio helpers | `{ type: "process", pid }` |
36
+
37
+ - **App picker:** `meetings.audioApps()` lists available apps. Use the selected entry's `pid`; no meeting scan is required.
38
+ - **Meeting capture:** a detected meeting's `pid` is also a process target.
39
+ - **Permissions:** `permissions.request()` returns a `PermissionStatus`; `permissions.status()` checks the current status without prompting.
40
+ - **Sessions:** one recording at a time per process.
60
41
 
61
- // Process the microphone track if requested.
62
- recording.microphone?.on("data", (chunk) => {
63
- console.log(chunk.length, chunk.hostTimeNs, chunk.sampleRate, chunk.channels);
64
- });
42
+ ### Add a microphone
65
43
 
66
- await new Promise((resolve) => setTimeout(resolve, 10_000));
67
- await recording.stopRecording();
44
+ Request microphone permission, then pass `microphone` in the capture options:
45
+
46
+ ```ts
47
+ import { MicrophoneSource } from "meeting-record";
68
48
 
69
- // Stop watching for meetings when done.
70
- MeetingRecord.meetings.unwatch();
49
+ await permissions.request(Permission.Microphone);
50
+ const recording = await capture.start(
51
+ { type: "system" },
52
+ {
53
+ mono: false, // Stereo system audio; defaults to mono. The mic stays mono.
54
+ microphone: MicrophoneSource.Default,
55
+ },
56
+ );
71
57
  ```
72
58
 
73
- ## Audio apps
59
+ - `MicrophoneSource.Default` follows the OS input device.
60
+ - `MicrophoneSource.Auto` prefers the captured app's mic on Windows, then the communications default. On macOS, it uses the default input.
61
+ - Without `microphone`, only system audio is captured.
62
+
63
+ ## Audio output
64
+
65
+ | Output | Access | Data |
66
+ | ------------ | ----------------------- | ---------------------------------------------------------------------------- |
67
+ | System audio | `recording.systemAudio` | Object-mode stream of `AudioChunk` packets |
68
+ | Microphone | `recording.microphone` | Same packet type; present when requested |
69
+ | Mixed audio | `recording.mixedAudio` | Byte stream of mono signed 16-bit little-endian PCM; present when configured |
74
70
 
75
- `meetings.audioApps()` lists owning applications for a source picker. Pass an entry's `pid` to `capture.start()`; no meeting scan or Accessibility grant is needed.
71
+ - **Raw samples:** `chunk.pcm` contains interleaved float32 PCM.
72
+ - **Packet metadata:** `hostTimeNs`, `frameCount`, `sampleRate`, `channels`, and `droppedSamples`.
73
+ - **Reading:** use `data` listeners or `for await...of` on each raw track. Use each packet's format; it can change during capture.
74
+ - **Slow readers:** raw tracks report discarded samples through `drop` events and `droppedSamples`.
75
+ - See [capture formats and channels](https://github.com/hoangvvo/meeting-record#capture) for sample rates and platform behavior.
76
76
 
77
- Windows targets include future child processes. macOS targets include current audio helpers; restart capture if helpers are replaced.
77
+ ### Mixed audio
78
78
 
79
- ## Mixed output
79
+ After requesting the audio and microphone permissions, start with `mix` to add a combined stream:
80
80
 
81
81
  ```ts
82
- const recording = await MeetingRecord.capture.start(
82
+ const recording = await capture.start(
83
83
  { type: "system" },
84
- { microphone: "default", mix: { sampleRate: 24_000 } },
84
+ {
85
+ microphone: MicrophoneSource.Default,
86
+ mix: { sampleRate: 24_000 }, // Combined mono s16le at 24 kHz.
87
+ },
85
88
  );
86
- recording.mixedAudio.pipe(destination);
87
- recording.mixedAudio.on("level", (rms) => console.log(rms));
88
- recording.mixedAudio.setMicrophoneMuted(true);
89
+
90
+ recording.mixedAudio.on("data", (pcm) => console.log(pcm.byteLength));
91
+ recording.mixedAudio.setMicrophoneMuted(true); // Affects the mix only.
89
92
  ```
90
93
 
91
- `mixedAudio` is mono s16le. Pause/resume excludes paused time; await its `end` event after stopping to consume the final tail. Raw tracks remain float32. Mixing does not perform echo cancellation.
94
+ - Mixed audio is a standard byte stream: it can also be piped to a writable.
95
+ - Raw tracks remain available alongside the mix.
96
+
97
+ ## Controls and events
98
+
99
+ | Action | API |
100
+ | ------------------------- | -------------------------------------------------------------- |
101
+ | Pause / resume | `recording.pauseRecording()` / `recording.resumeRecording()` |
102
+ | Stop | `await recording.stopRecording()`; safe to call more than once |
103
+ | Check recording state | `recording.state` |
104
+ | Check source availability | `track.availability` |
105
+ | Cancel start or recording | Pass an `AbortSignal` as `CaptureOptions.signal` |
106
+
107
+ - **Pause:** affects the whole recording; paused time is omitted.
108
+ - **Stop:** keep reading each output until `end` to drain queued audio.
109
+ - **Source loss:** the session stays alive. Track availability is `live`, `degraded`, or `interrupted`.
110
+ - **App exit:** system audio stops when all captured apps exit; the microphone and session stay alive. Start a new session for a relaunched app.
111
+
112
+ Attach source-event listeners immediately after awaiting `capture.start()`:
113
+
114
+ ```ts
115
+ recording.systemAudio.on("interrupted", (reason, message) => console.log(reason, message));
116
+ recording.systemAudio.on("degraded", (reason, message) => console.log(reason, message));
117
+ recording.systemAudio.on("resumed", () => console.log("System audio resumed"));
118
+ recording.microphone?.on("devicechange", (name) => console.log("Microphone:", name));
119
+ ```
120
+
121
+ ## Meetings
122
+
123
+ ```ts
124
+ import { meetings } from "meeting-record";
125
+
126
+ const active = (await meetings.scan()).filter((meeting) => meeting.shouldRecord);
127
+
128
+ meetings.on("started", (meeting) => console.log("Started:", meeting));
129
+ meetings.on("updated", (meeting) => console.log("Updated:", meeting));
130
+ meetings.on("ended", (meeting) => console.log("Ended:", meeting));
131
+ meetings.watch();
132
+
133
+ // Later: meetings.unwatch();
134
+ ```
135
+
136
+ - Use `shouldRecord` to decide whether a meeting is ready to record.
137
+ - Request `Permission.Accessibility` on macOS for titles and URLs; relaunch after granting it.
138
+ - See [supported services and detection behavior](https://github.com/hoangvvo/meeting-record#detection).
139
+
140
+ ## Types and errors
92
141
 
93
- Pass an `AbortSignal` to `capture.start()` to stop capture on cancellation, or to `permissions.request()` to cancel waiting for a grant.
142
+ - **Constants:** `Platform`, `Permission`, `PermissionStatus`, `MicrophoneSource`, `CaptureState`, `TrackAvailability`, and `TrackInterruptionReason` have matching union types.
143
+ - **Events:** names and callback arguments are checked by TypeScript, including chained `on`, `once`, and `off` calls.
144
+ - **Library failures:** capture, permissions, and enumeration use `MeetingRecordError` subclasses, with a numeric `code`.
145
+ - **Invalid arguments:** throw `TypeError`.
146
+ - **Cancellation:** aborting rejects pending work with the signal's reason and stops an active recording.
94
147
 
95
148
  ## License
96
149
 
package/dist/index.d.ts CHANGED
@@ -1,30 +1,49 @@
1
- /**
2
- * meeting-record — system-audio and microphone capture with meeting detection.
3
- *
4
- * Wraps the native addon so callers never see helper-process pids, status codes,
5
- * or the realtime callback. The addon itself is not re-exported.
6
- */
1
+ /** System-audio and microphone capture with meeting detection. */
7
2
  import { EventEmitter } from "node:events";
8
- import { Readable } from "node:stream";
9
3
  import { type MixedAudio, type MixedAudioOptions } from "./mixed-audio.js";
10
- export type { MixedAudio, MixedAudioOptions } from "./mixed-audio.js";
11
- export type Permission = "system-audio" | "microphone" | "accessibility";
12
- export type PermissionStatus = "granted" | "denied" | "unknown" | "not-required";
4
+ import type { EmitterEvents, ReadableEvents, TypedReadable } from "./typed-readable.js";
5
+ export type { MixedAudio, MixedAudioEvents, MixedAudioOptions } from "./mixed-audio.js";
6
+ export declare const Permission: {
7
+ readonly SystemAudio: "system-audio";
8
+ readonly Microphone: "microphone";
9
+ readonly Accessibility: "accessibility";
10
+ };
11
+ export type Permission = (typeof Permission)[keyof typeof Permission];
13
12
  /**
14
- * Stable platform identifier; the values never change. No display labels are
15
- * provided — presentation and localisation belong to the caller.
13
+ * Windows has no prompts: system audio and accessibility are always granted, and
14
+ * the microphone follows its privacy settings.
16
15
  */
17
- export type Platform = "zoom" | "teams" | "meet" | "webex" | "slack" | "discord"
18
- /** A browser tab on a recognised call URL. */
19
- | "browser" | "unknown";
16
+ export declare const PermissionStatus: {
17
+ readonly Granted: "granted";
18
+ readonly Denied: "denied";
19
+ readonly Unknown: "unknown";
20
+ };
21
+ export type PermissionStatus = (typeof PermissionStatus)[keyof typeof PermissionStatus];
22
+ /** Stable platform identifier. */
23
+ export declare const Platform: {
24
+ readonly Zoom: "zoom";
25
+ readonly Teams: "teams";
26
+ readonly Meet: "meet";
27
+ readonly Webex: "webex";
28
+ readonly Slack: "slack";
29
+ readonly Discord: "discord";
30
+ /** A browser tab on a recognised call URL. */
31
+ readonly Browser: "browser";
32
+ readonly Unknown: "unknown";
33
+ };
34
+ export type Platform = (typeof Platform)[keyof typeof Platform];
35
+ export type MeetingEvent = "started" | "updated" | "ended";
20
36
  export interface Meeting {
21
37
  readonly platform: Platform;
22
38
  /** The visible app. Use it in `CaptureTarget` when starting capture. */
23
39
  readonly pid: number;
24
40
  readonly appName: string;
25
- /** Requires the accessibility permission; empty string otherwise. */
41
+ /** Window or tab title. Requires the accessibility permission on macOS; empty string otherwise. */
26
42
  readonly title: string;
27
- /** Requires the accessibility permission; empty string otherwise. */
43
+ /**
44
+ * The active tab's address for browser meetings. Requires the accessibility permission on
45
+ * macOS; empty string otherwise, or when the call is in a background tab.
46
+ */
28
47
  readonly url: string;
29
48
  readonly isUsingMic: boolean;
30
49
  readonly isPlayingAudio: boolean;
@@ -44,14 +63,20 @@ export type CaptureTarget = {
44
63
  type: "process";
45
64
  pid: number;
46
65
  } | {
47
- /** All application output. */
66
+ /** All application output except the recorder's process tree. */
48
67
  type: "system";
49
68
  };
50
- export type MicrophoneSource = "default";
69
+ export declare const MicrophoneSource: {
70
+ /** Follow the OS default input device. */
71
+ readonly Default: "default";
72
+ /** Prefer the captured app's mic on Windows, then its communications default. Use the OS default on macOS. */
73
+ readonly Auto: "auto";
74
+ };
75
+ export type MicrophoneSource = (typeof MicrophoneSource)[keyof typeof MicrophoneSource];
51
76
  export interface CaptureOptions {
52
- /** Mono mixdown for system audio. Default true. */
77
+ /** Mono mixdown for system audio only; the microphone keeps its format. Default true. */
53
78
  mono?: boolean;
54
- /** Capture the default microphone as a separate track. Default off. */
79
+ /** Capture a microphone as a separate track. Default off. */
55
80
  microphone?: MicrophoneSource;
56
81
  /** Additional mono s16le output, aligned and resampled to the requested rate. */
57
82
  mix?: MixedAudioOptions;
@@ -85,14 +110,16 @@ export declare const permissions: {
85
110
  signal?: AbortSignal;
86
111
  }): Promise<PermissionStatus>;
87
112
  };
88
- export interface MeetingEvents {
113
+ export interface MeetingEvents extends EmitterEvents {
89
114
  started: (meeting: Meeting) => void;
90
115
  updated: (meeting: Meeting) => void;
91
116
  ended: (meeting: Meeting) => void;
92
117
  }
93
- declare class Meetings extends EventEmitter {
118
+ declare class Meetings extends EventEmitter<{
119
+ [Event in keyof MeetingEvents]: Parameters<MeetingEvents[Event]>;
120
+ }> {
94
121
  /** Point-in-time scan, highest confidence first. */
95
- scan(): Meeting[];
122
+ scan(): Promise<Meeting[]>;
96
123
  /** Begin emitting `started` / `updated` / `ended`. */
97
124
  watch(): void;
98
125
  unwatch(): void;
@@ -105,69 +132,83 @@ declare class Meetings extends EventEmitter {
105
132
  */
106
133
  audioApps(): AudioProcess[];
107
134
  }
108
- export declare const meetings: Meetings & {
109
- on<E extends keyof MeetingEvents>(event: E, listener: MeetingEvents[E]): Meetings;
110
- once<E extends keyof MeetingEvents>(event: E, listener: MeetingEvents[E]): Meetings;
111
- off<E extends keyof MeetingEvents>(event: E, listener: MeetingEvents[E]): Meetings;
135
+ export declare const meetings: Meetings;
136
+ export declare const CaptureState: {
137
+ readonly Recording: "recording";
138
+ readonly Paused: "paused";
139
+ readonly Stopped: "stopped";
112
140
  };
113
- /**
114
- * Interleaved float32 PCM.
115
- *
116
- * The native callback never waits for a slow consumer. If this stream is not read,
117
- * its preallocated ring buffer drops samples and emits `drop`.
118
- */
119
- export type CaptureState = "recording" | "paused" | "stopped";
120
- export type CaptureHealth = "running" | "recovering" | "failed" | "stopped";
141
+ export type CaptureState = (typeof CaptureState)[keyof typeof CaptureState];
142
+ /** Reason for source loss. */
143
+ export declare const TrackInterruptionReason: {
144
+ readonly DeviceRemoved: "device-removed";
145
+ readonly DeviceChanged: "device-changed";
146
+ readonly FormatChanged: "format-changed";
147
+ readonly AppExited: "app-exited";
148
+ readonly ServiceReset: "service-reset";
149
+ readonly Unknown: "unknown";
150
+ };
151
+ export type TrackInterruptionReason = (typeof TrackInterruptionReason)[keyof typeof TrackInterruptionReason];
121
152
  export interface AudioFormat {
122
153
  readonly sampleRate: number;
123
154
  readonly channels: number;
124
155
  }
125
- /**
126
- * A PCM buffer with the capture time of its first frame.
127
- *
128
- * `hostTimeNs` is monotonic (not Unix time) and uses the same host clock for the
129
- * system and microphone tracks, so callers can align or echo-cancel them without
130
- * relying on callback arrival order.
131
- */
132
- export interface AudioChunk extends Buffer {
156
+ /** PCM packet timed on a monotonic clock shared by both tracks. */
157
+ export interface AudioChunk {
158
+ /** Interleaved float32 PCM. Packet boundaries and metadata survive iteration. */
159
+ readonly pcm: Buffer;
133
160
  readonly hostTimeNs: bigint;
134
161
  readonly frameCount: number;
135
162
  readonly sampleRate: number;
136
163
  readonly channels: number;
137
164
  readonly droppedSamples: number;
138
165
  }
139
- export interface AudioTrack extends Readable {
166
+ export declare const TrackAvailability: {
167
+ readonly Live: "live";
168
+ readonly Degraded: "degraded";
169
+ readonly Interrupted: "interrupted";
170
+ };
171
+ export type TrackAvailability = (typeof TrackAvailability)[keyof typeof TrackAvailability];
172
+ export interface AudioTrackEvents extends ReadableEvents<AudioChunk> {
173
+ drop: (droppedSamples: number) => void;
174
+ /** Emitted before the first chunk in a newly negotiated device format. */
175
+ format: (format: AudioFormat) => void;
176
+ /** No source is available. Lost devices are retried; exited apps require a new target. */
177
+ interrupted: (reason: TrackInterruptionReason, message: string) => void;
178
+ resumed: () => void;
179
+ /** Some sources are lost; remaining sources continue delivering audio. */
180
+ degraded: (reason: TrackInterruptionReason, message: string) => void;
181
+ /** The microphone moved to another device. */
182
+ devicechange: (deviceName: string) => void;
183
+ }
184
+ /** Interleaved float32 PCM. Slow consumers lose samples, reported by `drop`. */
185
+ export interface AudioTrack extends TypedReadable<AudioTrackEvents> {
186
+ readonly availability: TrackAvailability;
187
+ [Symbol.asyncIterator](): NodeJS.AsyncIterator<AudioChunk>;
140
188
  /** Current negotiated format; a `format` event announces changes. */
141
189
  readonly sampleRate: number;
142
190
  readonly channels: number;
143
191
  /** Interleaved samples discarded because the bounded queue could not accept them. */
144
192
  readonly droppedSamples: number;
145
- on(event: "data", listener: (chunk: AudioChunk) => void): this;
146
- on(event: "drop", listener: (droppedSamples: number) => void): this;
147
- /** Emitted before the first chunk in a newly negotiated device format. */
148
- on(event: "format", listener: (format: AudioFormat) => void): this;
149
- on(event: string | symbol, listener: (...args: any[]) => void): this;
193
+ /** True when none of this track's sources are available. */
194
+ readonly interrupted: boolean;
195
+ /** The microphone in use; undefined for system audio. */
196
+ readonly deviceName?: string;
150
197
  }
151
- export interface CaptureSession extends EventEmitter {
198
+ /** A lost source interrupts its track; the session records until stopped. */
199
+ export interface CaptureSession {
152
200
  readonly systemAudio: AudioTrack;
153
201
  readonly microphone?: AudioTrack;
154
202
  readonly mixedAudio?: MixedAudio;
155
203
  readonly state: CaptureState;
156
- /** Native device health; independent of pause/resume state. */
157
- readonly health: CaptureHealth;
158
- /** Set when automatic recovery exhausts its retries. */
159
- readonly failure?: CaptureError;
160
204
  pauseRecording(): void;
161
205
  resumeRecording(): void;
162
206
  stopRecording(): Promise<void>;
163
- on(event: "interrupted", listener: () => void): this;
164
- on(event: "recovered", listener: () => void): this;
165
- on(event: "failed", listener: (error: CaptureError) => void): this;
166
- on(event: string | symbol, listener: (...args: any[]) => void): this;
167
207
  }
168
208
  export interface MixedCaptureSession extends CaptureSession {
169
209
  readonly mixedAudio: MixedAudio;
170
210
  }
211
+ /** Attach source-event listeners immediately after awaiting start; startup notifications are delivered on the next turn. */
171
212
  declare function startCapture(target: CaptureTarget, options: CaptureOptions & {
172
213
  mix: MixedAudioOptions;
173
214
  }): Promise<MixedCaptureSession>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,15 +1,42 @@
1
- /**
2
- * meeting-record — system-audio and microphone capture with meeting detection.
3
- *
4
- * Wraps the native addon so callers never see helper-process pids, status codes,
5
- * or the realtime callback. The addon itself is not re-exported.
6
- */
1
+ /** System-audio and microphone capture with meeting detection. */
7
2
  import { EventEmitter } from "node:events";
8
3
  import { Readable } from "node:stream";
9
4
  import { setTimeout as delay } from "node:timers/promises";
10
5
  import { createRequire } from "node:module";
11
6
  import { fileURLToPath } from "node:url";
12
7
  import { MixedAudioImpl } from "./mixed-audio.js";
8
+ export const Permission = {
9
+ SystemAudio: "system-audio",
10
+ Microphone: "microphone",
11
+ Accessibility: "accessibility",
12
+ };
13
+ /**
14
+ * Windows has no prompts: system audio and accessibility are always granted, and
15
+ * the microphone follows its privacy settings.
16
+ */
17
+ export const PermissionStatus = {
18
+ Granted: "granted",
19
+ Denied: "denied",
20
+ Unknown: "unknown",
21
+ };
22
+ /** Stable platform identifier. */
23
+ export const Platform = {
24
+ Zoom: "zoom",
25
+ Teams: "teams",
26
+ Meet: "meet",
27
+ Webex: "webex",
28
+ Slack: "slack",
29
+ Discord: "discord",
30
+ /** A browser tab on a recognised call URL. */
31
+ Browser: "browser",
32
+ Unknown: "unknown",
33
+ };
34
+ export const MicrophoneSource = {
35
+ /** Follow the OS default input device. */
36
+ Default: "default",
37
+ /** Prefer the captured app's mic on Windows, then its communications default. Use the OS default on macOS. */
38
+ Auto: "auto",
39
+ };
13
40
  export class MeetingRecordError extends Error {
14
41
  code;
15
42
  constructor(message, code) {
@@ -69,15 +96,15 @@ function asLibraryError(error) {
69
96
  }
70
97
  export const permissions = {
71
98
  status(permission) {
72
- if (permission !== "system-audio" &&
73
- permission !== "microphone" &&
74
- permission !== "accessibility") {
99
+ if (permission !== Permission.SystemAudio &&
100
+ permission !== Permission.Microphone &&
101
+ permission !== Permission.Accessibility) {
75
102
  throw new TypeError(`unknown permission: ${String(permission)}`);
76
103
  }
77
104
  const native = getNative();
78
- if (permission === "accessibility")
105
+ if (permission === Permission.Accessibility)
79
106
  return native.accessibilityPermissionStatus();
80
- if (permission === "microphone")
107
+ if (permission === Permission.Microphone)
81
108
  return native.microphonePermissionStatus();
82
109
  return native.audioPermissionStatus();
83
110
  },
@@ -90,16 +117,16 @@ export const permissions = {
90
117
  async request(permission, { timeoutMs = 120_000, signal } = {}) {
91
118
  signal?.throwIfAborted();
92
119
  const current = permissions.status(permission);
93
- if (current === "granted" || current === "not-required")
120
+ if (current === PermissionStatus.Granted)
94
121
  return current;
95
122
  const native = getNative();
96
- if (permission === "accessibility") {
123
+ if (permission === Permission.Accessibility) {
97
124
  const status = native.requestAccessibilityPermission();
98
125
  if (status !== 0)
99
126
  throw errorFromStatus("failed to request accessibility permission", status);
100
127
  return permissions.status(permission);
101
128
  }
102
- const requestStatus = permission === "microphone"
129
+ const requestStatus = permission === Permission.Microphone
103
130
  ? native.requestMicrophonePermission()
104
131
  : native.requestAudioPermission();
105
132
  if (requestStatus !== 0) {
@@ -110,27 +137,29 @@ export const permissions = {
110
137
  while (Date.now() < deadline) {
111
138
  await delay(500, undefined, { signal });
112
139
  const status = permissions.status(permission);
113
- if (status === "granted" || status === "denied")
140
+ if (status === PermissionStatus.Granted || status === PermissionStatus.Denied)
114
141
  return status;
115
142
  }
116
143
  return permissions.status(permission);
117
144
  },
118
145
  };
119
- function toMeeting(raw) {
120
- return raw;
121
- }
122
146
  class Meetings extends EventEmitter {
123
147
  /** Point-in-time scan, highest confidence first. */
124
- scan() {
125
- return getNative().scan().map(toMeeting);
148
+ async scan() {
149
+ try {
150
+ return await getNative().scan();
151
+ }
152
+ catch (error) {
153
+ throw asLibraryError(error);
154
+ }
126
155
  }
127
156
  /** Begin emitting `started` / `updated` / `ended`. */
128
157
  watch() {
129
158
  const native = getNative();
130
159
  if (native.isWatching())
131
160
  return;
132
- const status = native.watchStart((event, raw) => {
133
- this.emit(event, toMeeting(raw));
161
+ const status = native.watchStart((event, meeting) => {
162
+ this.emit(event, meeting);
134
163
  });
135
164
  if (status !== 0)
136
165
  throw errorFromStatus("failed to start watching", status);
@@ -145,17 +174,46 @@ class Meetings extends EventEmitter {
145
174
  }
146
175
  /** Every process doing audio IO. */
147
176
  audioProcesses() {
148
- return getNative().listAudioProcesses();
177
+ try {
178
+ return getNative().listAudioProcesses();
179
+ }
180
+ catch (error) {
181
+ throw asLibraryError(error);
182
+ }
149
183
  }
150
184
  /**
151
185
  * Applications doing audio IO, grouped by owning PID, including helpers.
152
186
  * Pass `pid` as a process target; no meeting scan or Accessibility grant is needed.
153
187
  */
154
188
  audioApps() {
155
- return getNative().listAudioApps();
189
+ try {
190
+ return getNative().listAudioApps();
191
+ }
192
+ catch (error) {
193
+ throw asLibraryError(error);
194
+ }
156
195
  }
157
196
  }
158
197
  export const meetings = new Meetings();
198
+ export const CaptureState = {
199
+ Recording: "recording",
200
+ Paused: "paused",
201
+ Stopped: "stopped",
202
+ };
203
+ /** Reason for source loss. */
204
+ export const TrackInterruptionReason = {
205
+ DeviceRemoved: "device-removed",
206
+ DeviceChanged: "device-changed",
207
+ FormatChanged: "format-changed",
208
+ AppExited: "app-exited",
209
+ ServiceReset: "service-reset",
210
+ Unknown: "unknown",
211
+ };
212
+ export const TrackAvailability = {
213
+ Live: "live",
214
+ Degraded: "degraded",
215
+ Interrupted: "interrupted",
216
+ };
159
217
  class AudioTrackImpl extends Readable {
160
218
  #sampleRate;
161
219
  #channels;
@@ -165,11 +223,14 @@ class AudioTrackImpl extends Readable {
165
223
  #mixReady = true;
166
224
  #mixConsumer;
167
225
  #finished = false;
168
- constructor(sampleRate, channels, microphone) {
169
- super({ objectMode: false, highWaterMark: 1 << 20 });
226
+ #availability = TrackAvailability.Live;
227
+ #deviceName;
228
+ constructor(sampleRate, channels, microphone, deviceName) {
229
+ super({ objectMode: true, highWaterMark: 32 });
170
230
  this.#sampleRate = sampleRate;
171
231
  this.#channels = channels;
172
232
  this.#microphone = microphone;
233
+ this.#deviceName = deviceName;
173
234
  }
174
235
  /** Required by Readable; data arrives from the native side, not on demand. */
175
236
  _read() {
@@ -195,6 +256,18 @@ class AudioTrackImpl extends Readable {
195
256
  get droppedSamples() {
196
257
  return this.#droppedSamples;
197
258
  }
259
+ get availability() {
260
+ return this.#availability;
261
+ }
262
+ [Symbol.asyncIterator]() {
263
+ return super[Symbol.asyncIterator]();
264
+ }
265
+ get interrupted() {
266
+ return this.#availability === TrackAvailability.Interrupted;
267
+ }
268
+ get deviceName() {
269
+ return this.#deviceName;
270
+ }
198
271
  pushAudio(chunk, info) {
199
272
  if (info.dropped > 0) {
200
273
  this.#droppedSamples += info.dropped;
@@ -205,19 +278,40 @@ class AudioTrackImpl extends Readable {
205
278
  this.#channels = info.channels;
206
279
  this.emit("format", { sampleRate: info.sampleRate, channels: info.channels });
207
280
  }
208
- Object.defineProperties(chunk, {
209
- hostTimeNs: { value: info.hostTimeNs, enumerable: false },
210
- frameCount: { value: info.frameCount, enumerable: false },
211
- sampleRate: { value: info.sampleRate, enumerable: false },
212
- channels: { value: info.channels, enumerable: false },
213
- droppedSamples: { value: info.dropped, enumerable: false },
214
- });
215
- this.#mixConsumer?.(chunk);
216
- if (!this.push(chunk) && this.#consumerReady) {
281
+ const packet = {
282
+ pcm: chunk,
283
+ hostTimeNs: info.hostTimeNs,
284
+ frameCount: info.frameCount,
285
+ sampleRate: info.sampleRate,
286
+ channels: info.channels,
287
+ droppedSamples: info.dropped,
288
+ };
289
+ this.#mixConsumer?.(packet);
290
+ if (!this.push(packet) && this.#consumerReady) {
217
291
  this.#consumerReady = false;
218
292
  getNative().captureSetConsumerReady(this.#microphone, false);
219
293
  }
220
294
  }
295
+ pushEvent(event) {
296
+ if (this.#finished)
297
+ return;
298
+ if (event.type === "interrupted") {
299
+ this.#availability = TrackAvailability.Interrupted;
300
+ this.emit("interrupted", event.reason, event.message);
301
+ }
302
+ else if (event.type === "resumed") {
303
+ this.#availability = TrackAvailability.Live;
304
+ this.emit("resumed");
305
+ }
306
+ else if (event.type === "degraded") {
307
+ this.#availability = TrackAvailability.Degraded;
308
+ this.emit("degraded", event.reason, event.message);
309
+ }
310
+ else {
311
+ this.#deviceName = event.deviceName;
312
+ this.emit("devicechange", event.deviceName);
313
+ }
314
+ }
221
315
  finish() {
222
316
  if (this.#finished)
223
317
  return;
@@ -225,11 +319,9 @@ class AudioTrackImpl extends Readable {
225
319
  this.push(null);
226
320
  }
227
321
  }
228
- class CaptureSessionImpl extends EventEmitter {
229
- #state = "recording";
230
- #health = "running";
231
- #failure;
232
- #healthTimer;
322
+ class CaptureSessionImpl {
323
+ #state = CaptureState.Recording;
324
+ #stopping;
233
325
  #systemAudio;
234
326
  #microphone;
235
327
  mixedAudio;
@@ -238,14 +330,11 @@ class CaptureSessionImpl extends EventEmitter {
238
330
  void this.stopRecording();
239
331
  };
240
332
  constructor(systemAudio, microphone, mix, signal) {
241
- super();
242
333
  this.#systemAudio = systemAudio;
243
334
  this.#microphone = microphone;
244
335
  this.#signal = signal;
245
336
  signal?.addEventListener("abort", this.#onAbort, { once: true });
246
337
  this.mixedAudio = mix ? new MixedAudioImpl(mix.sampleRate, systemAudio, microphone) : undefined;
247
- this.#healthTimer = setInterval(() => this.#pollHealth(), 250);
248
- this.#healthTimer.unref();
249
338
  }
250
339
  get systemAudio() {
251
340
  return this.#systemAudio;
@@ -256,68 +345,42 @@ class CaptureSessionImpl extends EventEmitter {
256
345
  get state() {
257
346
  return this.#state;
258
347
  }
259
- get health() {
260
- return this.#health;
261
- }
262
- get failure() {
263
- return this.#failure;
264
- }
265
348
  pauseRecording() {
266
- if (this.#state === "stopped")
349
+ if (this.#state === CaptureState.Stopped || this.#stopping)
267
350
  return;
268
- if (this.#state !== "paused") {
351
+ if (this.#state !== CaptureState.Paused) {
269
352
  getNative().capturePause();
270
- this.#state = "paused";
353
+ this.#state = CaptureState.Paused;
271
354
  this.mixedAudio?.pauseCapture();
272
355
  }
273
356
  }
274
357
  resumeRecording() {
275
- if (this.#state === "stopped")
358
+ if (this.#state === CaptureState.Stopped || this.#stopping)
276
359
  return;
277
- if (this.#state !== "recording") {
360
+ if (this.#state !== CaptureState.Recording) {
278
361
  this.mixedAudio?.resumeCapture();
279
362
  getNative().captureResume();
280
- this.#state = "recording";
363
+ this.#state = CaptureState.Recording;
281
364
  }
282
365
  }
283
- async stopRecording() {
284
- if (this.#state === "stopped")
285
- return;
286
- clearInterval(this.#healthTimer);
287
- getNative().captureStop();
288
- this.#state = "stopped";
289
- this.#health = "stopped";
290
- this.#finishTracks();
291
- }
292
- #finishTracks() {
293
- this.#signal?.removeEventListener("abort", this.#onAbort);
294
- this.#systemAudio.finish();
295
- this.#microphone?.finish();
296
- this.mixedAudio?.finishCapture();
297
- }
298
- #pollHealth() {
299
- if (this.#state === "stopped")
300
- return;
301
- const native = getNative();
302
- const health = native.captureHealthStatus();
303
- if (health === this.#health)
304
- return;
305
- const previous = this.#health;
306
- this.#health = health;
307
- if (health === "recovering") {
308
- this.emit("interrupted");
366
+ stopRecording() {
367
+ if (this.#stopping)
368
+ return this.#stopping;
369
+ if (this.#state === CaptureState.Stopped)
370
+ return Promise.resolve();
371
+ this.#stopping = this.#stop();
372
+ return this.#stopping;
373
+ }
374
+ async #stop() {
375
+ try {
376
+ await getNative().captureStop();
309
377
  }
310
- else if (health === "running" && previous === "recovering") {
311
- this.emit("recovered");
312
- }
313
- else if (health === "failed") {
314
- const failure = new CaptureError(native.lastError(), -7);
315
- this.#failure = failure;
316
- clearInterval(this.#healthTimer);
317
- native.captureStop();
318
- this.#state = "stopped";
319
- this.#finishTracks();
320
- this.emit("failed", failure);
378
+ finally {
379
+ this.#state = CaptureState.Stopped;
380
+ this.#signal?.removeEventListener("abort", this.#onAbort);
381
+ this.#systemAudio.finish();
382
+ this.#microphone?.finish();
383
+ this.mixedAudio?.finishCapture();
321
384
  }
322
385
  }
323
386
  }
@@ -326,8 +389,8 @@ async function startCapture(target, options = {}) {
326
389
  options.signal?.throwIfAborted();
327
390
  let nativeTarget;
328
391
  if (target.type === "process") {
329
- if (!Number.isInteger(target.pid) || target.pid <= 0) {
330
- throw new TypeError("process pid must be a positive integer");
392
+ if (!Number.isInteger(target.pid) || target.pid <= 0 || target.pid > 0x7fffffff) {
393
+ throw new TypeError("process pid must be an integer from 1 through 2147483647");
331
394
  }
332
395
  nativeTarget = { pid: target.pid };
333
396
  }
@@ -340,8 +403,10 @@ async function startCapture(target, options = {}) {
340
403
  if (options.mono !== undefined && typeof options.mono !== "boolean") {
341
404
  throw new TypeError("mono must be a boolean");
342
405
  }
343
- if (options.microphone !== undefined && options.microphone !== "default") {
344
- throw new TypeError('microphone must be "default"');
406
+ if (options.microphone !== undefined &&
407
+ options.microphone !== MicrophoneSource.Default &&
408
+ options.microphone !== MicrophoneSource.Auto) {
409
+ throw new TypeError('microphone must be "default" or "auto"');
345
410
  }
346
411
  if (options.mix !== undefined &&
347
412
  (!Number.isInteger(options.mix.sampleRate) || options.mix.sampleRate <= 0)) {
@@ -360,7 +425,7 @@ async function startCapture(target, options = {}) {
360
425
  pending.push({ chunk, info });
361
426
  return;
362
427
  }
363
- if (session.state !== "recording")
428
+ if (session.state !== CaptureState.Recording)
364
429
  return;
365
430
  session[track]?.pushAudio(chunk, info);
366
431
  };
@@ -370,28 +435,50 @@ async function startCapture(target, options = {}) {
370
435
  const onMicrophone = (chunk, info) => {
371
436
  receive("microphone", pendingMicrophone, chunk, info);
372
437
  };
438
+ const pendingEvents = [];
439
+ let eventsReady = false;
440
+ const onTrackEvent = (event) => {
441
+ if (!session || !eventsReady) {
442
+ pendingEvents.push(event);
443
+ return;
444
+ }
445
+ session[event.track]?.pushEvent(event);
446
+ };
373
447
  try {
374
448
  const formats = await native.captureStart({
375
449
  ...nativeTarget,
376
450
  mono: options.mono ?? true,
377
- microphone: options.microphone === "default",
378
- }, onSystemAudio, onMicrophone);
451
+ microphone: options.microphone === MicrophoneSource.Auto
452
+ ? 2
453
+ : options.microphone === MicrophoneSource.Default
454
+ ? 1
455
+ : 0,
456
+ }, onSystemAudio, onMicrophone, onTrackEvent);
379
457
  if (options.signal?.aborted) {
380
- native.captureStop();
458
+ await native.captureStop();
381
459
  options.signal.throwIfAborted();
382
460
  }
383
461
  const systemAudio = new AudioTrackImpl(formats.systemAudio.sampleRate, formats.systemAudio.channels, false);
384
462
  const microphone = formats.microphone
385
- ? new AudioTrackImpl(formats.microphone.sampleRate, formats.microphone.channels, true)
463
+ ? new AudioTrackImpl(formats.microphone.sampleRate, formats.microphone.channels, true, formats.microphone.deviceName || undefined)
386
464
  : undefined;
387
- session = new CaptureSessionImpl(systemAudio, microphone, options.mix, options.signal);
465
+ const recording = new CaptureSessionImpl(systemAudio, microphone, options.mix, options.signal);
466
+ session = recording;
388
467
  for (const { chunk, info } of pendingSystemAudio) {
389
468
  systemAudio.pushAudio(chunk, info);
390
469
  }
391
470
  for (const { chunk, info } of pendingMicrophone) {
392
471
  microphone?.pushAudio(chunk, info);
393
472
  }
394
- return session;
473
+ pendingSystemAudio.length = 0;
474
+ pendingMicrophone.length = 0;
475
+ setImmediate(() => {
476
+ for (const event of pendingEvents)
477
+ recording[event.track]?.pushEvent(event);
478
+ pendingEvents.length = 0;
479
+ eventsReady = true;
480
+ });
481
+ return recording;
395
482
  }
396
483
  catch (error) {
397
484
  if (options.signal?.aborted)
@@ -405,7 +492,7 @@ async function startCapture(target, options = {}) {
405
492
  export const capture = {
406
493
  start: startCapture,
407
494
  get running() {
408
- return captureStarting || getNative().captureHealthStatus() !== "stopped";
495
+ return captureStarting || getNative().isRunning();
409
496
  },
410
497
  };
411
498
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,18 @@
1
1
  import { Readable } from "node:stream";
2
2
  import type { AudioChunk } from "./index.js";
3
+ import type { ReadableEvents, TypedReadable } from "./typed-readable.js";
4
+ export interface MixedAudioEvents extends ReadableEvents<Buffer> {
5
+ level: (level: number) => void;
6
+ }
3
7
  export interface MixedAudioOptions {
4
8
  sampleRate: number;
5
9
  }
6
10
  /** Mono signed 16-bit little-endian PCM. Await `end` to consume the final tail. */
7
- export interface MixedAudio extends Readable {
11
+ export interface MixedAudio extends TypedReadable<MixedAudioEvents> {
8
12
  readonly sampleRate: number;
9
13
  readonly channels: 1;
10
14
  /** Affects the mixed output only; the raw microphone track stays available. */
11
15
  setMicrophoneMuted(muted: boolean): void;
12
- on(event: "level", listener: (level: number) => void): this;
13
- on(event: "data", listener: (chunk: Buffer) => void): this;
14
- on(event: string | symbol, listener: (...args: any[]) => void): this;
15
16
  }
16
17
  export interface MixSource {
17
18
  setMixConsumer(consumer: ((chunk: AudioChunk) => void) | undefined): void;
@@ -1 +1 @@
1
- {"version":3,"file":"mixed-audio.d.ts","sourceRoot":"","sources":["../src/mixed-audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,mFAAmF;AACnF,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,+EAA+E;IAC/E,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACzC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5D,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3D,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CACtE;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1E,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,MAAM,IAAI,OAAO,CAAC;CACnB;AAED,qBAAa,cAAe,SAAQ,QAAS,YAAW,UAAU;;IAChE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,KAAK;gBAaV,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS;IAcrE,KAAK,IAAI,IAAI;IAQb,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;IAWtF,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIxC,YAAY,IAAI,IAAI;IAQpB,aAAa,IAAI,IAAI;IAOrB,aAAa,IAAI,IAAI;CAmEtB"}
1
+ {"version":3,"file":"mixed-audio.d.ts","sourceRoot":"","sources":["../src/mixed-audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzE,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,MAAM,CAAC;IAC9D,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,mFAAmF;AACnF,MAAM,WAAW,UAAW,SAAQ,aAAa,CAAC,gBAAgB,CAAC;IACjE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,+EAA+E;IAC/E,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1E,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,MAAM,IAAI,OAAO,CAAC;CACnB;AAED,qBAAa,cAAe,SAAQ,QAAS,YAAW,UAAU;;IAChE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,KAAK;gBAaV,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS;IAcrE,KAAK,IAAI,IAAI;IAQb,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;IAWtF,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIxC,YAAY,IAAI,IAAI;IAQpB,aAAa,IAAI,IAAI;IAOrB,aAAa,IAAI,IAAI;CAmEtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"mixed-audio.js","sourceRoot":"","sources":["../src/mixed-audio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mixed-audio.js","sourceRoot":"","sources":["../src/mixed-audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAyBpD,MAAM,OAAO,cAAe,SAAQ,QAAQ;IACjC,UAAU,CAAS;IACnB,QAAQ,GAAG,CAAC,CAAC;IACb,QAAQ,CAAc;IACtB,WAAW,CAAwB;IACnC,MAAM,CAAW;IACjB,MAAM,CAAiB;IAChC,QAAQ,GAA6C,IAAI,GAAG,EAAE,CAAC;IAC/D,gBAAgB,GAAG,CAAC,CAAC;IACrB,aAAa,CAAkB;IAC/B,QAAQ,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,KAAK,CAAC;IACjB,OAAO,GAAG,KAAK,CAAC;IAChB,SAAS,GAAG,KAAK,CAAC;IAElB,YAAY,UAAkB,EAAE,WAAsB,EAAE,UAAsB;QAC5E,KAAK,CAAC,EAAE,aAAa,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAEQ,KAAK;QACZ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ;gBAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAEQ,QAAQ,CAAC,KAAmB,EAAE,QAAwC;QAC7E,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;QACvB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB,CAAC,KAAc;QAC/B,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC7D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC9D,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC7C,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,MAAM,CAAC,MAAiB,EAAE,KAAiB;QACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;YAChD,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;gBACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBACzB,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,aAAa,CAAC,KAAK,GAAG,KAAK;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI;YAAE,OAAO;QACjC,IACE,CAAC,KAAK;YACN,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM;YACzC,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,EACzC,CAAC;YACD,OAAO;QACT,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjC,+EAA+E;QAC/E,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE;YAC9D,IAAI,IAAI,CAAC,CAAC,CAAE,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,UAAU;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC,CAAC,CAAE,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACvC,KAAK,MAAM,KAAK,IAAI,MAAM;gBAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,IAAI,IAAI,CAAC,SAAS;oBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM;YACR,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ;oBAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;CACF"}
@@ -90,7 +90,7 @@ export class MonoResampler {
90
90
  }
91
91
  }
92
92
  function downmix(chunk) {
93
- const samples = new Float32Array(chunk.buffer, chunk.byteOffset, chunk.byteLength / Float32Array.BYTES_PER_ELEMENT);
93
+ const samples = new Float32Array(chunk.pcm.buffer, chunk.pcm.byteOffset, chunk.pcm.byteLength / Float32Array.BYTES_PER_ELEMENT);
94
94
  const { channels } = chunk;
95
95
  if (channels === 1) {
96
96
  return samples;
@@ -1 +1 @@
1
- {"version":3,"file":"mono-resampler.js","sourceRoot":"","sources":["../src/mono-resampler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mono-resampler.js","sourceRoot":"","sources":["../src/mono-resampler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pcm-mixer.d.ts","sourceRoot":"","sources":["../src/pcm-mixer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS7C,iFAAiF;AACjF,qBAAa,QAAQ;;gBAYP,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE;IAgB1D,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAiC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI9C,uEAAuE;IACvE,aAAa,IAAI,IAAI;IAOrB,4EAA4E;IAC5E,OAAO,IAAI,IAAI;IASf,IAAI,IAAI,MAAM,GAAG,IAAI;CAoCtB;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO5C"}
1
+ {"version":3,"file":"pcm-mixer.d.ts","sourceRoot":"","sources":["../src/pcm-mixer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS7C,iFAAiF;AACjF,qBAAa,QAAQ;;gBAYP,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE;IAgB1D,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAwC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI9C,uEAAuE;IACvE,aAAa,IAAI,IAAI;IAOrB,4EAA4E;IAC5E,OAAO,IAAI,IAAI;IASf,IAAI,IAAI,MAAM,GAAG,IAAI;CAoCtB;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO5C"}
package/dist/pcm-mixer.js CHANGED
@@ -26,10 +26,17 @@ export class PcmMixer {
26
26
  }
27
27
  write(source, chunk) {
28
28
  const input = this.#input(source);
29
- const samples = input.resampler.resample(chunk);
30
29
  this.#origin ??= chunk.hostTimeNs;
31
- const position = this.#originFrame +
30
+ let position = this.#originFrame +
32
31
  Math.round((Number(chunk.hostTimeNs - this.#origin) * this.#sampleRate) / 1e9);
32
+ // Skip gaps over a second when every source was absent.
33
+ if (position > this.#end + this.#sampleRate) {
34
+ this.finishSegment();
35
+ this.restart();
36
+ this.#origin = chunk.hostTimeNs;
37
+ position = this.#originFrame;
38
+ }
39
+ const samples = input.resampler.resample(chunk);
33
40
  // Absorb up to 20 ms of callback-clock jitter at packet joins.
34
41
  if (input.cursor === null || Math.abs(position - input.cursor) > this.#sampleRate / 50) {
35
42
  input.cursor = position;
@@ -1 +1 @@
1
- {"version":3,"file":"pcm-mixer.js","sourceRoot":"","sources":["../src/pcm-mixer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pcm-mixer.js","sourceRoot":"","sources":["../src/pcm-mixer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { Readable } from "node:stream";
2
+ export interface EmitterEvents {
3
+ error: (error: Error) => void;
4
+ newListener: (event: string | symbol, listener: (...args: any[]) => void) => void;
5
+ removeListener: (event: string | symbol, listener: (...args: any[]) => void) => void;
6
+ }
7
+ export interface ReadableEvents<Chunk> extends EmitterEvents {
8
+ close: () => void;
9
+ data: (chunk: Chunk) => void;
10
+ end: () => void;
11
+ pause: () => void;
12
+ readable: () => void;
13
+ resume: () => void;
14
+ }
15
+ type Listener<Events, Event> = Event extends keyof Events ? Events[Event] : never;
16
+ /** Replace Readable's permissive listener overloads, including its aliases. */
17
+ export interface TypedReadable<Events extends {
18
+ [Event in keyof Events]: (...args: any[]) => void;
19
+ }> extends Readable {
20
+ on<Event extends string | symbol>(event: Event | keyof Events, listener: Listener<Events, Event>): this;
21
+ once<Event extends string | symbol>(event: Event | keyof Events, listener: Listener<Events, Event>): this;
22
+ off<Event extends string | symbol>(event: Event | keyof Events, listener: Listener<Events, Event>): this;
23
+ addListener<Event extends string | symbol>(event: Event | keyof Events, listener: Listener<Events, Event>): this;
24
+ removeListener<Event extends string | symbol>(event: Event | keyof Events, listener: Listener<Events, Event>): this;
25
+ prependListener<Event extends string | symbol>(event: Event | keyof Events, listener: Listener<Events, Event>): this;
26
+ prependOnceListener<Event extends string | symbol>(event: Event | keyof Events, listener: Listener<Events, Event>): this;
27
+ }
28
+ export {};
29
+ //# sourceMappingURL=typed-readable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-readable.d.ts","sourceRoot":"","sources":["../src/typed-readable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;IAClF,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;CACtF;AAED,MAAM,WAAW,cAAc,CAAC,KAAK,CAAE,SAAQ,aAAa;IAC1D,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC7B,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,KAAK,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK,SAAS,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAElF,+EAA+E;AAC/E,MAAM,WAAW,aAAa,CAC5B,MAAM,SAAS;KAAG,KAAK,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;CAAE,CACpE,SAAQ,QAAQ;IAChB,EAAE,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC9B,KAAK,EAAE,KAAK,GAAG,MAAM,MAAM,EAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,IAAI,CAAC;IACR,IAAI,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAChC,KAAK,EAAE,KAAK,GAAG,MAAM,MAAM,EAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,IAAI,CAAC;IACR,GAAG,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC/B,KAAK,EAAE,KAAK,GAAG,MAAM,MAAM,EAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,IAAI,CAAC;IACR,WAAW,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EACvC,KAAK,EAAE,KAAK,GAAG,MAAM,MAAM,EAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,IAAI,CAAC;IACR,cAAc,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC1C,KAAK,EAAE,KAAK,GAAG,MAAM,MAAM,EAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,IAAI,CAAC;IACR,eAAe,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC3C,KAAK,EAAE,KAAK,GAAG,MAAM,MAAM,EAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,IAAI,CAAC;IACR,mBAAmB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC/C,KAAK,EAAE,KAAK,GAAG,MAAM,MAAM,EAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,IAAI,CAAC;CACT"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=typed-readable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-readable.js","sourceRoot":"","sources":["../src/typed-readable.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "meeting-record",
3
- "version": "0.1.2",
3
+ "version": "0.2.1",
4
4
  "description": "System-audio and microphone capture with meeting detection for macOS and Windows",
5
5
  "bugs": "https://github.com/hoangvvo/meeting-record/issues",
6
6
  "license": "MIT",