@wirecat/zoom-cli 0.1.1 → 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.
Files changed (89) hide show
  1. package/README.md +165 -9
  2. package/dist/agent-skill.d.ts +4 -0
  3. package/dist/agent-skill.d.ts.map +1 -0
  4. package/dist/agent-skill.js +16 -0
  5. package/dist/agent-skill.js.map +1 -0
  6. package/dist/api.d.ts +3 -2
  7. package/dist/api.d.ts.map +1 -1
  8. package/dist/api.js +10 -41
  9. package/dist/api.js.map +1 -1
  10. package/dist/archive-commands.d.ts +32 -0
  11. package/dist/archive-commands.d.ts.map +1 -0
  12. package/dist/archive-commands.js +182 -0
  13. package/dist/archive-commands.js.map +1 -0
  14. package/dist/archive-transcripts.d.ts +33 -0
  15. package/dist/archive-transcripts.d.ts.map +1 -0
  16. package/dist/archive-transcripts.js +131 -0
  17. package/dist/archive-transcripts.js.map +1 -0
  18. package/dist/bin/zm.js +53 -3
  19. package/dist/bin/zm.js.map +1 -1
  20. package/dist/commands.d.ts +12 -0
  21. package/dist/commands.d.ts.map +1 -0
  22. package/dist/commands.js +96 -0
  23. package/dist/commands.js.map +1 -0
  24. package/dist/errors.d.ts +4 -3
  25. package/dist/errors.d.ts.map +1 -1
  26. package/dist/errors.js +11 -4
  27. package/dist/errors.js.map +1 -1
  28. package/dist/execution.d.ts +16 -0
  29. package/dist/execution.d.ts.map +1 -0
  30. package/dist/execution.js +49 -0
  31. package/dist/execution.js.map +1 -0
  32. package/dist/index.d.ts +6 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +6 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/login.d.ts +1 -0
  37. package/dist/login.d.ts.map +1 -1
  38. package/dist/login.js +13 -1
  39. package/dist/login.js.map +1 -1
  40. package/dist/mcp-server.d.ts +16 -0
  41. package/dist/mcp-server.d.ts.map +1 -0
  42. package/dist/mcp-server.js +172 -0
  43. package/dist/mcp-server.js.map +1 -0
  44. package/dist/output-file.d.ts +4 -0
  45. package/dist/output-file.d.ts.map +1 -0
  46. package/dist/output-file.js +55 -0
  47. package/dist/output-file.js.map +1 -0
  48. package/dist/program.d.ts +22 -0
  49. package/dist/program.d.ts.map +1 -1
  50. package/dist/program.js +443 -44
  51. package/dist/program.js.map +1 -1
  52. package/dist/recording-archive.d.ts +62 -0
  53. package/dist/recording-archive.d.ts.map +1 -0
  54. package/dist/recording-archive.js +519 -0
  55. package/dist/recording-archive.js.map +1 -0
  56. package/dist/recording-sync.d.ts +15 -0
  57. package/dist/recording-sync.d.ts.map +1 -0
  58. package/dist/recording-sync.js +49 -0
  59. package/dist/recording-sync.js.map +1 -0
  60. package/dist/recordings.d.ts +47 -0
  61. package/dist/recordings.d.ts.map +1 -0
  62. package/dist/recordings.js +124 -0
  63. package/dist/recordings.js.map +1 -0
  64. package/dist/remote-http.d.ts +23 -0
  65. package/dist/remote-http.d.ts.map +1 -0
  66. package/dist/remote-http.js +113 -0
  67. package/dist/remote-http.js.map +1 -0
  68. package/dist/remote-meetings.d.ts +58 -0
  69. package/dist/remote-meetings.d.ts.map +1 -0
  70. package/dist/remote-meetings.js +151 -0
  71. package/dist/remote-meetings.js.map +1 -0
  72. package/dist/store-connection.d.ts +9 -0
  73. package/dist/store-connection.d.ts.map +1 -0
  74. package/dist/store-connection.js +39 -0
  75. package/dist/store-connection.js.map +1 -0
  76. package/dist/streaming.d.ts +6 -0
  77. package/dist/streaming.d.ts.map +1 -0
  78. package/dist/streaming.js +86 -0
  79. package/dist/streaming.js.map +1 -0
  80. package/dist/tokens.d.ts +6 -4
  81. package/dist/tokens.d.ts.map +1 -1
  82. package/dist/tokens.js +48 -18
  83. package/dist/tokens.js.map +1 -1
  84. package/dist/watch-commands.d.ts +25 -0
  85. package/dist/watch-commands.d.ts.map +1 -0
  86. package/dist/watch-commands.js +52 -0
  87. package/dist/watch-commands.js.map +1 -0
  88. package/package.json +22 -12
  89. package/skills/zoom-cli/SKILL.md +85 -0
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import type { RecordingAsset, RecordingMeeting } from "./recordings.js";
2
+ import { type ZoomRemote } from "./remote-http.js";
3
+ export interface DownloadOptions {
4
+ destination: string;
5
+ fileIds?: string[];
6
+ signal?: AbortSignal;
7
+ maxBytes?: number;
8
+ }
9
+ export declare const validateDownloadOptions: (options: DownloadOptions) => number;
10
+ export interface ArchivedFile {
11
+ id: string;
12
+ path: string;
13
+ size: number;
14
+ sha256: string;
15
+ remoteSize: number | null;
16
+ type: string;
17
+ format: string | null;
18
+ startedAt: string | null;
19
+ endedAt: string | null;
20
+ }
21
+ export interface ArchiveManifest {
22
+ version: 1;
23
+ meeting: Omit<RecordingMeeting, "assets">;
24
+ files: ArchivedFile[];
25
+ }
26
+ export interface ArchiveReport {
27
+ uuid: string;
28
+ manifestPath: string;
29
+ downloaded: ArchivedFile[];
30
+ skipped: ArchivedFile[];
31
+ unavailable: RecordingAsset[];
32
+ }
33
+ export interface ArchiveVerification {
34
+ manifestPath: string;
35
+ id: string;
36
+ path: string;
37
+ valid: boolean;
38
+ }
39
+ export interface ArchiveLockInfo {
40
+ name: string;
41
+ status: "active" | "stale" | "foreign" | "unrecognized";
42
+ pid: number | null;
43
+ host: string | null;
44
+ }
45
+ export declare const inspectArchiveLocks: (destination: string, options?: {
46
+ signal?: AbortSignal;
47
+ }) => Promise<ArchiveLockInfo[]>;
48
+ export declare const recoverArchiveLocks: (destination: string, options?: {
49
+ apply?: boolean;
50
+ signal?: AbortSignal;
51
+ }) => Promise<{
52
+ locks: ArchiveLockInfo[];
53
+ removed: string[];
54
+ }>;
55
+ export declare const archiveRecording: (remote: ZoomRemote, meeting: RecordingMeeting, urls: Map<string, string>, options: DownloadOptions) => Promise<ArchiveReport>;
56
+ export declare const inspectArchive: (destination: string, options?: {
57
+ signal?: AbortSignal;
58
+ }) => Promise<ArchiveManifest[]>;
59
+ export declare const verifyArchive: (destination: string, options?: {
60
+ signal?: AbortSignal;
61
+ }) => Promise<ArchiveVerification[]>;
62
+ //# sourceMappingURL=recording-archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording-archive.d.ts","sourceRoot":"","sources":["../src/recording-archive.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAEnE,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AACD,eAAO,MAAM,uBAAuB,YAAa,eAAe,KAAG,MAiBlE,CAAA;AACD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AACD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,CAAA;IACV,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;IACzC,KAAK,EAAE,YAAY,EAAE,CAAA;CACtB;AACD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,YAAY,EAAE,CAAA;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,WAAW,EAAE,cAAc,EAAE,CAAA;CAC9B;AACD,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;CACf;AACD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,cAAc,CAAA;IACvD,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB;AA4CD,eAAO,MAAM,mBAAmB,gBACjB,MAAM,YACV;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAChC,OAAO,CAAC,eAAe,EAAE,CA0B3B,CAAA;AACD,eAAO,MAAM,mBAAmB,gBACjB,MAAM,YACV;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KACjD,OAAO,CAAC;IAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAqBzD,CAAA;AAsPD,eAAO,MAAM,gBAAgB,WACnB,UAAU,WACT,gBAAgB,QACnB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,WAChB,eAAe,KACvB,OAAO,CAAC,aAAa,CA+GvB,CAAA;AACD,eAAO,MAAM,cAAc,gBACZ,MAAM,YACV;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAChC,OAAO,CAAC,eAAe,EAAE,CAiB3B,CAAA;AACD,eAAO,MAAM,aAAa,gBACX,MAAM,YACV;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAChC,OAAO,CAAC,mBAAmB,EAAE,CAuB/B,CAAA"}
@@ -0,0 +1,519 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { constants } from "node:fs";
3
+ import { link, lstat, mkdir, open, readdir, realpath, rename, rmdir, unlink } from "node:fs/promises";
4
+ import { hostname } from "node:os";
5
+ import { join } from "node:path";
6
+ import { retryableStatus, statusToCode } from "@wirecat/cli-core/http";
7
+ import { checkCancelled, string, ZoomError } from "./errors.js";
8
+ import { operationSignal } from "./remote-http.js";
9
+ export const validateDownloadOptions = (options) => {
10
+ const maxBytes = options.maxBytes === undefined ? 20 * 1024 ** 3 : options.maxBytes;
11
+ if (typeof options.destination !== "string" ||
12
+ !options.destination.trim() ||
13
+ !Number.isSafeInteger(maxBytes) ||
14
+ maxBytes <= 0)
15
+ throw new ZoomError("validation_error", "archive destination and positive download limit are required");
16
+ if (options.fileIds !== undefined &&
17
+ (!Array.isArray(options.fileIds) ||
18
+ options.fileIds.length === 0 ||
19
+ options.fileIds.some((id) => typeof id !== "string" || !id.trim())))
20
+ throw new ZoomError("validation_error", "recording selection must contain nonempty file ids");
21
+ return maxBytes;
22
+ };
23
+ const locksFolder = ".zoom-archive-locks";
24
+ const lockOwner = async (path, name, signal) => {
25
+ checkCancelled(signal);
26
+ try {
27
+ const file = await localFile(path);
28
+ try {
29
+ if ((await file.stat()).size > 4096)
30
+ return null;
31
+ const content = await file.readFile("utf8");
32
+ checkCancelled(signal);
33
+ const owner = JSON.parse(content);
34
+ if (owner.version !== 1 ||
35
+ !Number.isSafeInteger(owner.pid) ||
36
+ owner.pid <= 0 ||
37
+ !string(owner.host) ||
38
+ !/^[a-f0-9-]{36}$/.test(owner.nonce) ||
39
+ name !== `${owner.pid}-${owner.nonce}.json`)
40
+ return null;
41
+ return owner;
42
+ }
43
+ finally {
44
+ await file.close();
45
+ }
46
+ }
47
+ catch {
48
+ checkCancelled(signal);
49
+ return null;
50
+ }
51
+ };
52
+ const lockStatus = (owner) => {
53
+ if (owner.host !== hostname())
54
+ return "foreign";
55
+ try {
56
+ process.kill(owner.pid, 0);
57
+ return "active";
58
+ }
59
+ catch (error) {
60
+ return typeof error === "object" && error !== null && "code" in error && error.code === "ESRCH" ? "stale" : "active";
61
+ }
62
+ };
63
+ export const inspectArchiveLocks = async (destination, options = {}) => {
64
+ checkCancelled(options.signal);
65
+ const root = await realpath(destination);
66
+ checkCancelled(options.signal);
67
+ const folder = join(root, locksFolder);
68
+ let names;
69
+ try {
70
+ if ((await lstat(folder)).isSymbolicLink())
71
+ throw new ZoomError("validation_error", "archive lock directory must not be a symlink");
72
+ names = await readdir(folder);
73
+ }
74
+ catch (error) {
75
+ if (missing(error))
76
+ return [];
77
+ throw new ZoomError("configuration_error", "archive lock directory could not be read");
78
+ }
79
+ const result = [];
80
+ for (const name of names.sort()) {
81
+ checkCancelled(options.signal);
82
+ const owner = await lockOwner(join(folder, name), name, options.signal);
83
+ result.push({
84
+ name,
85
+ status: owner ? lockStatus(owner) : "unrecognized",
86
+ pid: owner?.pid ?? null,
87
+ host: owner?.host ?? null,
88
+ });
89
+ }
90
+ return result;
91
+ };
92
+ export const recoverArchiveLocks = async (destination, options = {}) => {
93
+ checkCancelled(options.signal);
94
+ const root = await realpath(destination);
95
+ const locks = await inspectArchiveLocks(root, options);
96
+ const removed = [];
97
+ if (options.apply)
98
+ for (const lock of locks) {
99
+ checkCancelled(options.signal);
100
+ if (lock.status !== "stale")
101
+ continue;
102
+ const path = join(root, locksFolder, lock.name);
103
+ const owner = await lockOwner(path, lock.name, options.signal);
104
+ if (!owner || lockStatus(owner) !== "stale")
105
+ continue;
106
+ // Unique PID/nonce paths are never reused, so a new writer cannot replace this stale owner.
107
+ try {
108
+ await unlink(path);
109
+ removed.push(lock.name);
110
+ }
111
+ catch (error) {
112
+ if (!missing(error))
113
+ throw new ZoomError("configuration_error", "stale archive lock could not be removed");
114
+ }
115
+ }
116
+ return { locks, removed };
117
+ };
118
+ const acquireArchiveLock = async (root) => {
119
+ const folder = join(root, locksFolder);
120
+ await mkdir(folder, { recursive: true });
121
+ if ((await lstat(folder)).isSymbolicLink())
122
+ throw new ZoomError("validation_error", "archive lock directory must not be a symlink");
123
+ const owner = { version: 1, pid: process.pid, host: hostname(), nonce: randomUUID() };
124
+ const name = `${owner.pid}-${owner.nonce}.json`;
125
+ const path = join(folder, name);
126
+ const file = await open(path, "wx", 0o600);
127
+ try {
128
+ await file.writeFile(JSON.stringify(owner));
129
+ await file.sync();
130
+ await file.close();
131
+ const locks = await inspectArchiveLocks(root);
132
+ if (locks.some((lock) => lock.name !== name))
133
+ throw new ZoomError("validation_error", "archive is locked; inspect or recover stale local locks");
134
+ try {
135
+ await lstat(join(root, ".zoom-archive.lock"));
136
+ throw new ZoomError("validation_error", "archive has an unrecognized legacy lock");
137
+ }
138
+ catch (error) {
139
+ if (!missing(error))
140
+ throw error;
141
+ }
142
+ return path;
143
+ }
144
+ catch (error) {
145
+ await file.close().catch(() => undefined);
146
+ await unlink(path).catch(() => undefined);
147
+ throw error;
148
+ }
149
+ };
150
+ const digest = (text) => createHash("sha256").update(text).digest("hex");
151
+ const manifestName = (uuid) => `.zoom-archive-${digest(uuid)}.json`;
152
+ const filename = (uuid, asset) => `${digest(uuid)}-${digest(asset.id ?? "")}.${/^(mp4|m4a|mp3|wav|vtt|txt|json)$/i.test(asset.format ?? "") ? asset.format?.toLowerCase() : "bin"}`;
153
+ const missing = (error) => typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
154
+ const localFile = async (path) => {
155
+ if (!(await lstat(path)).isFile())
156
+ throw new ZoomError("validation_error", "archive path must be an ordinary file");
157
+ return open(path, constants.O_RDONLY | constants.O_NOFOLLOW);
158
+ };
159
+ const fingerprint = async (path, signal) => {
160
+ checkCancelled(signal);
161
+ const file = await localFile(path);
162
+ try {
163
+ checkCancelled(signal);
164
+ const hash = createHash("sha256");
165
+ let size = 0;
166
+ for await (const chunk of file.createReadStream({ autoClose: false, ...(signal ? { signal } : {}) })) {
167
+ checkCancelled(signal);
168
+ size += chunk.length;
169
+ hash.update(chunk);
170
+ }
171
+ return { size, sha256: hash.digest("hex") };
172
+ }
173
+ finally {
174
+ await file.close();
175
+ }
176
+ };
177
+ const onlyKeys = (value, keys) => Object.keys(value).every((key) => keys.includes(key));
178
+ const nullableText = (value) => value === null || typeof value === "string";
179
+ const nullableTime = (value) => value === null ||
180
+ (typeof value === "string" && Number.isFinite(Date.parse(value)) && new Date(value).toISOString() === value);
181
+ const readManifest = async (path, signal) => {
182
+ checkCancelled(signal);
183
+ let file;
184
+ try {
185
+ file = await localFile(path);
186
+ }
187
+ catch (error) {
188
+ if (missing(error))
189
+ return null;
190
+ throw error;
191
+ }
192
+ try {
193
+ if ((await file.stat()).size > 1048576)
194
+ throw new Error("manifest size");
195
+ const content = await file.readFile("utf8");
196
+ checkCancelled(signal);
197
+ const value = JSON.parse(content);
198
+ if (value.version !== 1 ||
199
+ !string(value.meeting?.uuid) ||
200
+ !string(value.meeting.id) ||
201
+ !Array.isArray(value.files) ||
202
+ !onlyKeys(value, ["version", "meeting", "files"]) ||
203
+ !onlyKeys(value.meeting, ["id", "uuid", "title", "startedAt"]) ||
204
+ !nullableText(value.meeting.title) ||
205
+ !nullableTime(value.meeting.startedAt))
206
+ throw new Error("manifest shape");
207
+ const ids = new Set();
208
+ const files = value.files.map((entry) => {
209
+ if (!onlyKeys(entry, ["id", "path", "size", "sha256", "remoteSize", "type", "format", "startedAt", "endedAt"]) ||
210
+ !string(entry.type) ||
211
+ !nullableText(entry.format) ||
212
+ !nullableTime(entry.startedAt) ||
213
+ !nullableTime(entry.endedAt) ||
214
+ !string(entry.id) ||
215
+ ids.has(entry.id) ||
216
+ !/^[a-f0-9]{64}-[a-f0-9]{64}\.(mp4|m4a|mp3|wav|vtt|txt|json|bin)$/.test(entry.path) ||
217
+ !/^[a-f0-9]{64}$/.test(entry.sha256) ||
218
+ !Number.isSafeInteger(entry.size) ||
219
+ entry.size < 0 ||
220
+ (entry.remoteSize !== null && (!Number.isSafeInteger(entry.remoteSize) || entry.remoteSize < 0)) ||
221
+ entry.path !== filename(value.meeting.uuid, { id: entry.id, format: entry.format }))
222
+ throw new Error("manifest file");
223
+ ids.add(entry.id);
224
+ return {
225
+ id: entry.id,
226
+ path: entry.path,
227
+ size: entry.size,
228
+ sha256: entry.sha256,
229
+ remoteSize: entry.remoteSize ?? null,
230
+ type: string(entry.type) ?? "unknown",
231
+ format: string(entry.format),
232
+ startedAt: string(entry.startedAt),
233
+ endedAt: string(entry.endedAt),
234
+ };
235
+ });
236
+ if (!path.endsWith(manifestName(value.meeting.uuid)))
237
+ throw new Error("manifest identity");
238
+ return {
239
+ version: 1,
240
+ meeting: {
241
+ id: value.meeting.id,
242
+ uuid: value.meeting.uuid,
243
+ title: string(value.meeting.title),
244
+ startedAt: string(value.meeting.startedAt),
245
+ },
246
+ files,
247
+ };
248
+ }
249
+ catch {
250
+ checkCancelled(signal);
251
+ throw new ZoomError("validation_error", "archive manifest is invalid");
252
+ }
253
+ finally {
254
+ await file.close();
255
+ }
256
+ };
257
+ const writeManifest = async (root, manifest) => {
258
+ const temp = join(root, `.zoom-manifest-${randomUUID()}.tmp`);
259
+ const file = await open(temp, "wx", 0o600);
260
+ try {
261
+ try {
262
+ await file.writeFile(`${JSON.stringify(manifest, null, 2)}\n`);
263
+ await file.sync();
264
+ }
265
+ finally {
266
+ await file.close();
267
+ }
268
+ await rename(temp, join(root, manifestName(manifest.meeting.uuid)));
269
+ }
270
+ finally {
271
+ await unlink(temp).catch(() => undefined);
272
+ }
273
+ };
274
+ const targetUrl = (input, base) => {
275
+ let target;
276
+ try {
277
+ target = new URL(input, base);
278
+ }
279
+ catch {
280
+ throw new ZoomError("invalid_response", "Zoom returned an unexpected recording download host");
281
+ }
282
+ if (target.protocol !== "https:" ||
283
+ target.username ||
284
+ target.password ||
285
+ (target.port && target.port !== "443") ||
286
+ !/(^|\.)zoom\.(us|com)$/.test(target.hostname))
287
+ throw new ZoomError("invalid_response", "Zoom returned an unexpected recording download host");
288
+ return target;
289
+ };
290
+ class DownloadFailure extends ZoomError {
291
+ response;
292
+ constructor(response) {
293
+ super(statusToCode(response.status), `Recording download failed (HTTP ${response.status})`);
294
+ this.response = response;
295
+ }
296
+ }
297
+ const transfer = async (remote, url, accessToken, path, maxBytes, format, signal) => {
298
+ let target = targetUrl(url);
299
+ let response;
300
+ for (let redirects = 0;; redirects++) {
301
+ response = await remote.get(target, accessToken, signal, false);
302
+ if (![301, 302, 303, 307, 308].includes(response.status))
303
+ break;
304
+ const location = response.headers.get("location");
305
+ await response.body?.cancel();
306
+ if (!location || redirects >= 5)
307
+ throw new ZoomError("invalid_response", "Zoom returned invalid recording redirects");
308
+ target = targetUrl(location, target);
309
+ }
310
+ if (!response.ok) {
311
+ await response.body?.cancel();
312
+ throw new DownloadFailure(response);
313
+ }
314
+ if (!response.body ||
315
+ response.status === 206 ||
316
+ /\btext\/html\b/i.test(response.headers.get("content-type") ?? "") ||
317
+ (format?.toUpperCase() !== "JSON" && /\bapplication\/json\b/i.test(response.headers.get("content-type") ?? ""))) {
318
+ await response.body?.cancel();
319
+ throw new ZoomError("invalid_response", "Zoom returned an unexpected recording body");
320
+ }
321
+ const file = await open(path, "wx", 0o600);
322
+ const hash = createHash("sha256");
323
+ const reader = response.body.getReader();
324
+ const abortReader = () => {
325
+ void reader.cancel().catch(() => undefined);
326
+ };
327
+ signal.addEventListener("abort", abortReader, { once: true });
328
+ let size = 0;
329
+ try {
330
+ for (;;) {
331
+ checkCancelled(signal);
332
+ let chunk;
333
+ try {
334
+ chunk = await reader.read();
335
+ }
336
+ catch {
337
+ throw new ZoomError("network_error", "Recording download could not be completed");
338
+ }
339
+ checkCancelled(signal);
340
+ const { done, value } = chunk;
341
+ if (done)
342
+ break;
343
+ size += value.byteLength;
344
+ if (size > maxBytes)
345
+ throw new ZoomError("invalid_response", "recording exceeds the configured download size limit");
346
+ hash.update(value);
347
+ // FileHandle.write may perform a short write even for a buffered chunk.
348
+ let offset = 0;
349
+ while (offset < value.length)
350
+ offset += (await file.write(value, offset, value.length - offset)).bytesWritten;
351
+ }
352
+ const advertised = response.headers.get("content-length");
353
+ if (advertised !== null && (!/^\d+$/.test(advertised) || Number(advertised) !== size))
354
+ throw new ZoomError("invalid_response", "recording download size does not match its response");
355
+ await file.sync();
356
+ return { size, sha256: hash.digest("hex") };
357
+ }
358
+ finally {
359
+ signal.removeEventListener("abort", abortReader);
360
+ await reader.cancel().catch(() => undefined);
361
+ reader.releaseLock();
362
+ await file.close();
363
+ }
364
+ };
365
+ export const archiveRecording = async (remote, meeting, urls, options) => {
366
+ const signal = operationSignal(options.signal);
367
+ checkCancelled(signal);
368
+ const maxBytes = validateDownloadOptions(options);
369
+ if (options.fileIds?.some((id) => !meeting.assets.some((asset) => asset.id === id)))
370
+ throw new ZoomError("validation_error", "requested recording file was not found");
371
+ let lock;
372
+ let root = "";
373
+ try {
374
+ await mkdir(options.destination, { recursive: true });
375
+ root = await realpath(options.destination);
376
+ lock = await acquireArchiveLock(root);
377
+ const manifestPath = join(root, manifestName(meeting.uuid));
378
+ const previous = await readManifest(manifestPath, signal);
379
+ const manifest = previous ?? {
380
+ version: 1,
381
+ meeting: { id: meeting.id, uuid: meeting.uuid, title: meeting.title, startedAt: meeting.startedAt },
382
+ files: [],
383
+ };
384
+ const report = { uuid: meeting.uuid, manifestPath, downloaded: [], skipped: [], unavailable: [] };
385
+ for (const asset of meeting.assets) {
386
+ checkCancelled(signal);
387
+ if (options.fileIds && (asset.id === null || !options.fileIds.includes(asset.id)))
388
+ continue;
389
+ if (!asset.available || asset.id === null) {
390
+ report.unavailable.push(asset);
391
+ continue;
392
+ }
393
+ const path = filename(meeting.uuid, asset);
394
+ const existing = manifest.files.find((file) => file.id === asset.id);
395
+ if (existing) {
396
+ const local = await fingerprint(join(root, existing.path), signal);
397
+ if (existing.path !== path ||
398
+ existing.remoteSize !== asset.size ||
399
+ existing.startedAt !== asset.startedAt ||
400
+ existing.endedAt !== asset.endedAt ||
401
+ existing.size !== local.size ||
402
+ existing.sha256 !== local.sha256)
403
+ throw new ZoomError("validation_error", "existing recording has changed; choose a new archive destination");
404
+ report.skipped.push(existing);
405
+ continue;
406
+ }
407
+ try {
408
+ await lstat(join(root, path));
409
+ throw new ZoomError("validation_error", "recording path already exists without a verified manifest");
410
+ }
411
+ catch (error) {
412
+ if (!missing(error))
413
+ throw error;
414
+ }
415
+ const temp = join(root, `.zoom-download-${randomUUID()}.part`);
416
+ const tokens = await remote.tokens.tokens();
417
+ let result;
418
+ for (let attempt = 0;; attempt++) {
419
+ try {
420
+ result = await transfer(remote, urls.get(asset.id) ?? "", tokens.accessToken, temp, maxBytes, asset.format, signal);
421
+ if (asset.size !== null && result.size !== asset.size)
422
+ throw new ZoomError("invalid_response", "recording download size does not match Zoom metadata");
423
+ checkCancelled(signal);
424
+ await link(temp, join(root, path));
425
+ break;
426
+ }
427
+ catch (error) {
428
+ await unlink(temp).catch(() => undefined);
429
+ checkCancelled(signal);
430
+ const retryable = error instanceof DownloadFailure
431
+ ? retryableStatus(error.response.status)
432
+ : error instanceof ZoomError && error.code === "network_error";
433
+ if (attempt >= 2 ||
434
+ !retryable ||
435
+ !(await remote.pause(error instanceof DownloadFailure ? error.response : null, attempt, signal)))
436
+ throw error;
437
+ }
438
+ }
439
+ await unlink(temp);
440
+ const entry = {
441
+ id: asset.id,
442
+ path,
443
+ ...result,
444
+ remoteSize: asset.size,
445
+ type: asset.type,
446
+ format: asset.format,
447
+ startedAt: asset.startedAt,
448
+ endedAt: asset.endedAt,
449
+ };
450
+ manifest.files.push(entry);
451
+ await writeManifest(root, manifest);
452
+ report.downloaded.push(entry);
453
+ }
454
+ if (!previous)
455
+ await writeManifest(root, manifest);
456
+ return report;
457
+ }
458
+ catch (error) {
459
+ checkCancelled(signal);
460
+ if (error instanceof ZoomError)
461
+ throw error;
462
+ throw new ZoomError("provider_error", "archive operation could not be completed");
463
+ }
464
+ finally {
465
+ if (root && !lock)
466
+ await rmdir(join(root, locksFolder)).catch(() => undefined);
467
+ if (lock) {
468
+ await unlink(lock);
469
+ await rmdir(join(root, locksFolder)).catch(() => undefined);
470
+ }
471
+ }
472
+ };
473
+ export const inspectArchive = async (destination, options = {}) => {
474
+ checkCancelled(options.signal);
475
+ try {
476
+ const root = await realpath(destination);
477
+ const names = (await readdir(root)).filter((name) => /^\.zoom-archive-[a-f0-9]{64}\.json$/.test(name)).sort();
478
+ const manifests = [];
479
+ for (const name of names) {
480
+ checkCancelled(options.signal);
481
+ const manifest = await readManifest(join(root, name), options.signal);
482
+ if (manifest)
483
+ manifests.push(manifest);
484
+ }
485
+ return manifests;
486
+ }
487
+ catch (error) {
488
+ checkCancelled(options.signal);
489
+ if (error instanceof ZoomError)
490
+ throw error;
491
+ throw new ZoomError("configuration_error", "archive destination could not be read");
492
+ }
493
+ };
494
+ export const verifyArchive = async (destination, options = {}) => {
495
+ checkCancelled(options.signal);
496
+ const manifests = await inspectArchive(destination, options);
497
+ const root = await realpath(destination);
498
+ const result = [];
499
+ for (const manifest of manifests)
500
+ for (const file of manifest.files) {
501
+ checkCancelled(options.signal);
502
+ let valid = false;
503
+ try {
504
+ const local = await fingerprint(join(root, file.path), options.signal);
505
+ valid = local.size === file.size && local.sha256 === file.sha256;
506
+ }
507
+ catch {
508
+ checkCancelled(options.signal);
509
+ }
510
+ result.push({
511
+ manifestPath: join(destination, manifestName(manifest.meeting.uuid)),
512
+ id: file.id,
513
+ path: file.path,
514
+ valid,
515
+ });
516
+ }
517
+ return result;
518
+ };
519
+ //# sourceMappingURL=recording-archive.js.map