@wirecat/zoom-cli 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +36 -7
  2. package/dist/archive-commands.d.ts +2 -1
  3. package/dist/archive-commands.d.ts.map +1 -1
  4. package/dist/archive-commands.js +54 -10
  5. package/dist/archive-commands.js.map +1 -1
  6. package/dist/bin/zm.js +2 -0
  7. package/dist/bin/zm.js.map +1 -1
  8. package/dist/execution.d.ts.map +1 -1
  9. package/dist/execution.js +3 -0
  10. package/dist/execution.js.map +1 -1
  11. package/dist/index.d.ts +4 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +4 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/ordinary-file.d.ts +1 -0
  16. package/dist/ordinary-file.d.ts.map +1 -1
  17. package/dist/ordinary-file.js +13 -0
  18. package/dist/ordinary-file.js.map +1 -1
  19. package/dist/program.d.ts +7 -1
  20. package/dist/program.d.ts.map +1 -1
  21. package/dist/program.js +62 -0
  22. package/dist/program.js.map +1 -1
  23. package/dist/recording-archive.d.ts +2 -0
  24. package/dist/recording-archive.d.ts.map +1 -1
  25. package/dist/recording-archive.js +151 -79
  26. package/dist/recording-archive.js.map +1 -1
  27. package/dist/recording-partial-store.d.ts +20 -0
  28. package/dist/recording-partial-store.d.ts.map +1 -0
  29. package/dist/recording-partial-store.js +225 -0
  30. package/dist/recording-partial-store.js.map +1 -0
  31. package/dist/recording-promotion-store.d.ts +12 -0
  32. package/dist/recording-promotion-store.d.ts.map +1 -0
  33. package/dist/recording-promotion-store.js +92 -0
  34. package/dist/recording-promotion-store.js.map +1 -0
  35. package/dist/recording-schedule-commands.d.ts +12 -0
  36. package/dist/recording-schedule-commands.d.ts.map +1 -0
  37. package/dist/recording-schedule-commands.js +80 -0
  38. package/dist/recording-schedule-commands.js.map +1 -0
  39. package/dist/recording-schedule-store.d.ts +4 -0
  40. package/dist/recording-schedule-store.d.ts.map +1 -0
  41. package/dist/recording-schedule-store.js +141 -0
  42. package/dist/recording-schedule-store.js.map +1 -0
  43. package/dist/recording-schedule-systemd.d.ts +14 -0
  44. package/dist/recording-schedule-systemd.d.ts.map +1 -0
  45. package/dist/recording-schedule-systemd.js +173 -0
  46. package/dist/recording-schedule-systemd.js.map +1 -0
  47. package/dist/recording-schedule.d.ts +93 -0
  48. package/dist/recording-schedule.d.ts.map +1 -0
  49. package/dist/recording-schedule.js +121 -0
  50. package/dist/recording-schedule.js.map +1 -0
  51. package/dist/recording-sync-store.d.ts +3 -0
  52. package/dist/recording-sync-store.d.ts.map +1 -0
  53. package/dist/recording-sync-store.js +187 -0
  54. package/dist/recording-sync-store.js.map +1 -0
  55. package/dist/recording-sync.d.ts +10 -1
  56. package/dist/recording-sync.d.ts.map +1 -1
  57. package/dist/recording-sync.js +72 -41
  58. package/dist/recording-sync.js.map +1 -1
  59. package/dist/recordings.d.ts +9 -10
  60. package/dist/recordings.d.ts.map +1 -1
  61. package/dist/recordings.js +50 -13
  62. package/dist/recordings.js.map +1 -1
  63. package/dist/remote-meetings.d.ts +15 -0
  64. package/dist/remote-meetings.d.ts.map +1 -1
  65. package/dist/remote-meetings.js +73 -65
  66. package/dist/remote-meetings.js.map +1 -1
  67. package/package.json +3 -3
  68. package/skills/zoom-cli/SKILL.md +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording-sync-store.js","sourceRoot":"","sources":["../src/recording-sync-store.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,14 @@
1
+ import { type RecordingSyncCheckpointStore } from "@wirecat/cli-meetings";
1
2
  import type { ArchiveReport, DownloadOptions, RecordingMeeting, ZoomRecordings } from "./recordings.js";
2
3
  export interface ArchiveSyncOptions extends Omit<DownloadOptions, "fileIds"> {
3
4
  from: string;
4
5
  to: string;
6
+ checkpointPath?: string;
7
+ checkpointStore?: RecordingSyncCheckpointStore;
8
+ recheckFrom?: string;
9
+ maxPages?: number;
10
+ maxEntries?: number;
11
+ now?: () => number;
5
12
  }
6
13
  export interface ArchiveSyncReceipt {
7
14
  window: {
@@ -10,6 +17,8 @@ export interface ArchiveSyncReceipt {
10
17
  };
11
18
  meeting: Pick<RecordingMeeting, "id" | "uuid" | "title">;
12
19
  archive: ArchiveReport;
20
+ availability?: "unknown";
21
+ checkpointRevision?: number | null;
13
22
  }
14
- export declare function syncRecordingArchive(recordings: Pick<ZoomRecordings, "list" | "download">, options: ArchiveSyncOptions): AsyncGenerator<ArchiveSyncReceipt, void, void>;
23
+ export declare function syncRecordingArchive(recordings: Pick<ZoomRecordings, "list" | "download"> & Partial<Pick<ZoomRecordings, "catalog">>, input: ArchiveSyncOptions): AsyncGenerator<ArchiveSyncReceipt, void, void>;
15
24
  //# sourceMappingURL=recording-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recording-sync.d.ts","sourceRoot":"","sources":["../src/recording-sync.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGvG,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC;IAC1E,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX;AACD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACpC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;IACxD,OAAO,EAAE,aAAa,CAAA;CACvB;AAUD,wBAAuB,oBAAoB,CACzC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,UAAU,CAAC,EACrD,OAAO,EAAE,kBAAkB,GAC1B,cAAc,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,CAsChD"}
1
+ {"version":3,"file":"recording-sync.d.ts","sourceRoot":"","sources":["../src/recording-sync.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,4BAA4B,EAIlC,MAAM,uBAAuB,CAAA;AAI9B,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGvG,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC;IAC1E,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,4BAA4B,CAAA;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AACD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACpC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;IACxD,OAAO,EAAE,aAAa,CAAA;IACtB,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACnC;AACD,wBAAuB,oBAAoB,CACzC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,EAChG,KAAK,EAAE,kBAAkB,GACxB,cAAc,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,CAyEhD"}
@@ -1,49 +1,80 @@
1
+ import { createHash } from "node:crypto";
2
+ import { join, resolve } from "node:path";
3
+ import { RecordingSyncError, recordingWindows, syncRecordingArchive as syncArchive, } from "@wirecat/cli-meetings";
1
4
  import { checkCancelled, ZoomError } from "./errors.js";
2
5
  import { validateDownloadOptions } from "./recording-archive.js";
6
+ import { fileRecordingSyncCheckpointStore } from "./recording-sync-store.js";
3
7
  import { operationSignal } from "./remote-http.js";
4
- const date = (value) => {
5
- if (typeof value !== "string" || !/^\d{4}-\d{2}-\d{2}$/.test(value))
6
- throw new ZoomError("validation_error", "archive dates must be valid YYYY-MM-DD dates");
7
- const result = new Date(`${value}T00:00:00Z`);
8
- if (!Number.isFinite(result.getTime()) || result.toISOString().slice(0, 10) !== value)
9
- throw new ZoomError("validation_error", "archive dates must be valid YYYY-MM-DD dates");
10
- return result;
11
- };
12
- const label = (value) => value.toISOString().slice(0, 10);
13
- export async function* syncRecordingArchive(recordings, options) {
14
- const from = date(options.from);
15
- const to = date(options.to);
16
- const anniversary = new Date(from);
17
- const lastDay = new Date(from);
18
- lastDay.setUTCFullYear(from.getUTCFullYear() + 10, from.getUTCMonth() + 1, 0);
19
- anniversary.setUTCFullYear(from.getUTCFullYear() + 10, from.getUTCMonth(), Math.min(from.getUTCDate(), lastDay.getUTCDate()));
20
- if (to < from || to > anniversary)
21
- throw new ZoomError("validation_error", "archive date range must be ordered and at most ten calendar years");
22
- validateDownloadOptions(options);
23
- const signal = operationSignal(options.signal);
24
- const seen = new Set();
25
- let cursor = from;
26
- while (cursor <= to) {
8
+ export async function* syncRecordingArchive(recordings, input) {
9
+ const options = { ...input };
10
+ let signal;
11
+ try {
12
+ recordingWindows(options.from, options.to);
13
+ const maxBytes = validateDownloadOptions(options);
14
+ const resume = options.resume === true;
15
+ if (!resume && (options.checkpointPath !== undefined || options.checkpointStore !== undefined))
16
+ throw new ZoomError("validation_error", "archive checkpoints require resume mode");
17
+ if (options.checkpointPath !== undefined &&
18
+ (typeof options.checkpointPath !== "string" || !options.checkpointPath.trim()))
19
+ throw new ZoomError("validation_error", "archive checkpoint path is required");
20
+ const account = options.account ?? "legacy-uncheckpointed";
21
+ signal = operationSignal(options.signal);
27
22
  checkCancelled(signal);
28
- const end = new Date(cursor);
29
- end.setUTCMonth(end.getUTCMonth() + 1, 0);
30
- const upper = new Date(Math.min(end.getTime(), to.getTime()));
31
- const window = { from: label(cursor), to: label(upper) };
32
- const meetings = await recordings.list({ ...window, signal });
33
- for (const meeting of meetings) {
34
- checkCancelled(signal);
35
- if (seen.has(meeting.uuid))
36
- continue;
37
- seen.add(meeting.uuid);
38
- const archive = await recordings.download(meeting.uuid, {
39
- destination: options.destination,
40
- signal,
41
- ...(options.maxBytes === undefined ? {} : { maxBytes: options.maxBytes }),
42
- });
43
- yield { window, meeting: { id: meeting.id, uuid: meeting.uuid, title: meeting.title }, archive };
23
+ const catalog = recordings.catalog
24
+ ? recordings.catalog(account)
25
+ : {
26
+ provider: "zoom",
27
+ list: async (range) => ({
28
+ items: (await recordings.list(range)).map(({ uuid, ...item }) => ({ ...item, externalId: uuid })),
29
+ nextCursor: null,
30
+ }),
31
+ };
32
+ const configKey = createHash("sha256")
33
+ .update(JSON.stringify({ version: 1, destination: resolve(options.destination), maxBytes }))
34
+ .digest("hex");
35
+ const checkpointStore = resume
36
+ ? (options.checkpointStore ??
37
+ fileRecordingSyncCheckpointStore(options.checkpointPath ?? join(options.destination, ".zoom-archive-sync.json")))
38
+ : undefined;
39
+ const receipts = syncArchive(catalog, {
40
+ scope: { provider: "zoom", account },
41
+ from: options.from,
42
+ to: options.to,
43
+ now: options.now ?? Date.now,
44
+ signal,
45
+ ...(options.recheckFrom === undefined ? {} : { recheckFrom: options.recheckFrom }),
46
+ ...(options.maxPages === undefined ? {} : { maxPages: options.maxPages }),
47
+ ...(options.maxEntries === undefined ? {} : { maxEntries: options.maxEntries }),
48
+ ...(checkpointStore === undefined
49
+ ? {}
50
+ : { checkpoint: { store: checkpointStore, jobId: "recording-archive", configKey } }),
51
+ archive: async (occurrence, activeSignal) => {
52
+ const { uuid, ...archive } = await recordings.download(occurrence.externalId, {
53
+ destination: options.destination,
54
+ signal: activeSignal,
55
+ ...(options.maxBytes === undefined ? {} : { maxBytes: options.maxBytes }),
56
+ ...(resume ? { resume: true, account } : {}),
57
+ });
58
+ return { ...archive, externalId: uuid };
59
+ },
60
+ });
61
+ for await (const receipt of receipts) {
62
+ const { externalId, ...archive } = receipt.archive;
63
+ yield {
64
+ window: receipt.window,
65
+ meeting: { id: receipt.occurrence.id, uuid: receipt.occurrence.externalId, title: receipt.occurrence.title },
66
+ archive: { ...archive, uuid: externalId },
67
+ ...(resume ? { availability: receipt.availability, checkpointRevision: receipt.checkpointRevision } : {}),
68
+ };
44
69
  }
45
- cursor = new Date(upper);
46
- cursor.setUTCDate(cursor.getUTCDate() + 1);
70
+ }
71
+ catch (error) {
72
+ if (error instanceof RecordingSyncError) {
73
+ if (error.code === "cancelled")
74
+ checkCancelled(signal);
75
+ throw new ZoomError(error.code, error.message);
76
+ }
77
+ throw error;
47
78
  }
48
79
  }
49
80
  //# sourceMappingURL=recording-sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recording-sync.js","sourceRoot":"","sources":["../src/recording-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recording-sync.js","sourceRoot":"","sources":["../src/recording-sync.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,8 @@
1
+ import type { RecordingAsset as CommonRecordingAsset, RecordingCatalog } from "@wirecat/cli-meetings";
1
2
  import { type ArchiveReport, type DownloadOptions } from "./recording-archive.js";
2
3
  import { type RemoteOptions, ZoomRemote } from "./remote-http.js";
3
4
  import type { TokenManager } from "./tokens.js";
4
- export interface RecordingAsset {
5
- id: string | null;
6
- type: string;
7
- format: string | null;
8
- size: number | null;
9
- status: string;
10
- available: boolean;
11
- startedAt: string | null;
12
- endedAt: string | null;
13
- }
5
+ export type RecordingAsset = CommonRecordingAsset;
14
6
  export interface RecordingMeeting {
15
7
  id: string;
16
8
  uuid: string;
@@ -27,6 +19,13 @@ export declare const required: (value: unknown) => string;
27
19
  export declare class ZoomRecordings {
28
20
  readonly remote: ZoomRemote;
29
21
  constructor(tokens: Pick<TokenManager, "tokens">, fetcher: typeof fetch, options?: RemoteOptions);
22
+ catalog(account: string): RecordingCatalog;
23
+ listPage(options: RecordingRange & {
24
+ cursor?: string;
25
+ }): Promise<{
26
+ items: RecordingMeeting[];
27
+ nextCursor: string | null;
28
+ }>;
30
29
  list(options: RecordingRange): Promise<RecordingMeeting[]>;
31
30
  private details;
32
31
  show(id: string, options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"recordings.d.ts","sourceRoot":"","sources":["../src/recordings.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAmB,KAAK,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AACD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,cAAc,EAAE,CAAA;CACzB;AACD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AACD,eAAO,MAAM,QAAQ,UAAW,OAAO,KAAG,MAIzC,CAAA;AA2CD,qBAAa,cAAc;IACzB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,YAAY,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,EAAE,OAAO,GAAE,aAAkB,EAEnG;IACK,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAuC/D;YACa,OAAO;IAuBf,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAExF;IACK,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CAK3E;CACF;AAED,YAAY,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,eAAe,GAChB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEhH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AACD,eAAO,MAAM,cAAc,WACjB,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,WAC3B,OAAO,KAAK,YACZ;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAChC,OAAO,CAAC,WAAW,CAGrB,CAAA"}
1
+ {"version":3,"file":"recordings.d.ts","sourceRoot":"","sources":["../src/recordings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,IAAI,oBAAoB,EAAE,gBAAgB,EAAiB,MAAM,uBAAuB,CAAA;AAGpH,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAmB,KAAK,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAA;AACjD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,cAAc,EAAE,CAAA;CACzB;AACD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AACD,eAAO,MAAM,QAAQ,UAAW,OAAO,KAAG,MAIzC,CAAA;AA2CD,qBAAa,cAAc;IACzB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,YAAY,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,EAAE,OAAO,GAAE,aAAkB,EAEnG;IACD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAezC;IACK,QAAQ,CACZ,OAAO,EAAE,cAAc,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC;QAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAyCnE;IACK,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoB/D;YACa,OAAO;IAuBf,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAExF;IACK,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CAK3E;CACF;AAED,YAAY,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,eAAe,GAChB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEhH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AACD,eAAO,MAAM,cAAc,WACjB,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,WAC3B,OAAO,KAAK,YACZ;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAChC,OAAO,CAAC,WAAW,CAGrB,CAAA"}
@@ -55,7 +55,23 @@ export class ZoomRecordings {
55
55
  constructor(tokens, fetcher, options = {}) {
56
56
  this.remote = new ZoomRemote(tokens, fetcher, options);
57
57
  }
58
- async list(options) {
58
+ catalog(account) {
59
+ if (typeof account !== "string" || !account.trim())
60
+ throw new ZoomError("validation_error", "recording account is required");
61
+ return {
62
+ provider: "zoom",
63
+ list: async (options) => {
64
+ if (options.account !== account)
65
+ throw new ZoomError("validation_error", "recording catalog account cannot be overridden");
66
+ const page = await this.listPage(options);
67
+ return {
68
+ items: page.items.map(({ uuid, ...item }) => ({ ...item, externalId: uuid })),
69
+ nextCursor: page.nextCursor,
70
+ };
71
+ },
72
+ };
73
+ }
74
+ async listPage(options) {
59
75
  const dates = [options.from, options.to].map((date) => {
60
76
  const instant = Date.parse(`${date}T00:00:00Z`);
61
77
  if (!/^\d{4}-\d{2}-\d{2}$/.test(date) ||
@@ -67,28 +83,49 @@ export class ZoomRecordings {
67
83
  const difference = (dates[1] ?? 0) - (dates[0] ?? 0);
68
84
  if (difference < 0 || difference > 31 * 86400000)
69
85
  throw new ZoomError("validation_error", "recording date range must be ordered and at most one month");
86
+ if (options.cursor !== undefined &&
87
+ (typeof options.cursor !== "string" || !options.cursor.trim() || options.cursor.length > 4096))
88
+ throw new ZoomError("validation_error", "invalid recording pagination cursor");
70
89
  const signal = operationSignal(options.signal);
71
90
  const query = new URLSearchParams({ from: options.from, to: options.to, page_size: "100" });
72
- const seen = new Set();
91
+ if (options.cursor !== undefined)
92
+ query.set("next_page_token", options.cursor);
93
+ const body = await this.remote.request(`/users/me/recordings?${query}`, "cloud_recording:read:list_user_recordings", { signal });
94
+ if (!Array.isArray(body.meetings) || body.meetings.length > 1000)
95
+ throw new ZoomError("invalid_response", "Zoom returned an invalid recording list");
96
+ const items = body.meetings.map(meeting);
97
+ if (body.next_page_token !== undefined &&
98
+ body.next_page_token !== null &&
99
+ body.next_page_token !== "" &&
100
+ (typeof body.next_page_token !== "string" || !body.next_page_token.trim()))
101
+ throw new ZoomError("invalid_response", "Zoom returned an invalid recording pagination cursor");
102
+ const nextCursor = string(body.next_page_token);
103
+ if (nextCursor !== null && nextCursor.length > 4096)
104
+ throw new ZoomError("invalid_response", "Zoom returned an oversized pagination cursor");
105
+ return { items, nextCursor };
106
+ }
107
+ async list(options) {
108
+ const cursors = new Set();
73
109
  const meetings = new Map();
74
- for (;;) {
75
- const body = await this.remote.request(`/users/me/recordings?${query}`, "cloud_recording:read:list_user_recordings", { signal });
76
- if (!Array.isArray(body.meetings))
77
- throw new ZoomError("invalid_response", "Zoom returned an invalid recording list");
78
- for (const value of body.meetings) {
79
- const item = meeting(value);
110
+ let cursor;
111
+ for (let pages = 0;; pages++) {
112
+ if (pages >= 1000)
113
+ throw new ZoomError("invalid_response", "recording catalog page limit exceeded");
114
+ const page = await this.listPage({ ...options, ...(cursor === undefined ? {} : { cursor }) });
115
+ for (const item of page.items) {
80
116
  const previous = meetings.get(item.uuid);
81
117
  if (previous && JSON.stringify(previous) !== JSON.stringify(item))
82
118
  throw new ZoomError("invalid_response", "Zoom returned conflicting recording occurrences");
119
+ if (!previous && meetings.size >= 10000)
120
+ throw new ZoomError("invalid_response", "recording catalog occurrence limit exceeded");
83
121
  meetings.set(item.uuid, item);
84
122
  }
85
- const next = string(body.next_page_token);
86
- if (!next)
123
+ if (page.nextCursor === null)
87
124
  return [...meetings.values()];
88
- if (seen.has(next))
125
+ if (cursors.has(page.nextCursor))
89
126
  throw new ZoomError("invalid_response", "Zoom repeated a pagination token");
90
- seen.add(next);
91
- query.set("next_page_token", next);
127
+ cursors.add(page.nextCursor);
128
+ cursor = page.nextCursor;
92
129
  }
93
130
  }
94
131
  async details(id, signal) {
@@ -1 +1 @@
1
- {"version":3,"file":"recordings.js","sourceRoot":"","sources":["../src/recordings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recordings.js","sourceRoot":"","sources":["../src/recordings.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type ManagedMeeting, type ManagedMeetingChange } from "@wirecat/cli-meetings";
1
2
  import { type RemoteOptions, ZoomRemote } from "./remote-http.js";
2
3
  import type { TokenManager } from "./tokens.js";
3
4
  export interface RemoteMeeting {
@@ -55,4 +56,18 @@ export declare class ZoomRemoteMeetings {
55
56
  update(id: string, change: MeetingChange, options?: MutationOptions): Promise<MeetingMutation>;
56
57
  cancel(id: string, options?: MutationOptions): Promise<MeetingMutation>;
57
58
  }
59
+ /** The remote client must already be bound to the selected account's token manager. */
60
+ export declare const createZoomMeetingManagement: (remote: ZoomRemoteMeetings, account: string) => {
61
+ scope: Readonly<import("@wirecat/cli-meetings").MeetingProviderScope>;
62
+ capabilities: readonly string[];
63
+ list(options?: import("@wirecat/cli-meetings").MeetingOperationOptions): Promise<ManagedMeeting[]>;
64
+ get(id: string, options?: import("@wirecat/cli-meetings").MeetingOperationOptions): Promise<ManagedMeeting>;
65
+ invitation(id: string, options?: import("@wirecat/cli-meetings").MeetingOperationOptions): Promise<{
66
+ id: string;
67
+ invitation: string;
68
+ }>;
69
+ create(change: ManagedMeetingChange, options?: import("@wirecat/cli-meetings").MeetingMutationOptions): Promise<import("@wirecat/cli-meetings").MeetingMutationReceipt>;
70
+ update(id: string, change: ManagedMeetingChange, options?: import("@wirecat/cli-meetings").MeetingMutationOptions): Promise<import("@wirecat/cli-meetings").MeetingMutationReceipt>;
71
+ cancel(id: string, options?: import("@wirecat/cli-meetings").MeetingMutationOptions): Promise<import("@wirecat/cli-meetings").MeetingMutationReceipt>;
72
+ };
58
73
  //# sourceMappingURL=remote-meetings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote-meetings.d.ts","sourceRoot":"","sources":["../src/remote-meetings.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,aAAa,EAAsB,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACtG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AACD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;CACb;AACD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AACD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACtC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;IAC9F,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB;AA+ED,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,YAAY,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,EAAE,OAAO,GAAE,aAAkB,EAEnG;IACK,IAAI,CAAC,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAmB3E;IACK,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAErF;IACK,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAGhH;YACa,MAAM;IA2BpB,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAOrF;IACD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAOjG;IACD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAM1E;CACF"}
1
+ {"version":3,"file":"remote-meetings.d.ts","sourceRoot":"","sources":["../src/remote-meetings.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { createMeetingManagement, dispatchMeetingMutation, validateMeetingChange, } from "@wirecat/cli-meetings";
1
2
  import { object, string, ZoomError } from "./errors.js";
2
3
  import { required } from "./recordings.js";
3
4
  import { operationSignal, ZoomRemote } from "./remote-http.js";
@@ -26,57 +27,25 @@ const changeBody = (change, create) => {
26
27
  if (!change ||
27
28
  Object.keys(change).some((key) => !["topic", "startTime", "durationMinutes", "timezone", "agenda", "type"].includes(key)))
28
29
  throw new ZoomError("validation_error", "unsupported meeting change field");
29
- const body = {};
30
- if (change.topic !== undefined) {
31
- if (!string(change.topic))
32
- throw new ZoomError("validation_error", "meeting topic must be nonempty");
33
- body.topic = change.topic;
34
- }
35
- if (create && !string(change.topic))
36
- throw new ZoomError("validation_error", "meeting topic is required");
37
- if (change.startTime !== undefined) {
38
- if (typeof change.startTime !== "string" ||
39
- !/T.+(?:Z|[+-]\d{2}:\d{2})$/i.test(change.startTime) ||
40
- !Number.isFinite(Date.parse(change.startTime)))
41
- throw new ZoomError("validation_error", "meeting start must be an ISO timestamp with a timezone");
42
- const date = change.startTime.slice(0, 10);
43
- const dateInstant = Date.parse(`${date}T00:00:00Z`);
44
- if (!Number.isFinite(dateInstant) || new Date(dateInstant).toISOString().slice(0, 10) !== date)
45
- throw new ZoomError("validation_error", "meeting start contains an invalid calendar date");
46
- body.start_time = new Date(change.startTime).toISOString();
47
- }
48
- if (change.durationMinutes !== undefined) {
49
- if (!Number.isSafeInteger(change.durationMinutes) || change.durationMinutes <= 0 || change.durationMinutes > 1440)
50
- throw new ZoomError("validation_error", "meeting duration must be an integer from 1 to 1440 minutes");
51
- body.duration = change.durationMinutes;
52
- }
53
- if (change.timezone !== undefined) {
54
- try {
55
- new Intl.DateTimeFormat("en", { timeZone: change.timezone }).format();
56
- }
57
- catch {
58
- throw new ZoomError("validation_error", "meeting timezone must be a valid IANA timezone");
59
- }
60
- body.timezone = change.timezone;
61
- }
62
- if (change.agenda !== undefined) {
63
- if (typeof change.agenda !== "string")
64
- throw new ZoomError("validation_error", "meeting agenda must be text");
65
- body.agenda = change.agenda;
66
- }
67
30
  if (change.type !== undefined && change.type !== 1 && change.type !== 2)
68
31
  throw new ZoomError("validation_error", "only instant or scheduled meeting types are supported");
69
- if (create) {
70
- body.type = change.type ?? 2;
71
- if (body.type === 2 && body.start_time === undefined)
72
- throw new ZoomError("validation_error", "scheduled meeting start is required");
73
- }
74
- else {
75
- if (change.type !== undefined)
76
- body.type = change.type;
77
- if (Object.keys(body).length === 0)
78
- throw new ZoomError("validation_error", "at least one meeting change is required");
79
- }
32
+ const neutral = {
33
+ ...(change.topic !== undefined ? { title: change.topic } : {}),
34
+ ...(change.type !== undefined ? { kind: change.type === 1 ? "instant" : "scheduled" } : {}),
35
+ ...(change.startTime !== undefined ? { startTime: change.startTime } : {}),
36
+ ...(change.durationMinutes !== undefined ? { durationMinutes: change.durationMinutes } : {}),
37
+ ...(change.timezone !== undefined ? { timezone: change.timezone } : {}),
38
+ ...(change.agenda !== undefined ? { agenda: change.agenda } : {}),
39
+ };
40
+ const validated = validateMeetingChange(neutral, create);
41
+ const body = {
42
+ ...(validated.title !== undefined ? { topic: validated.title } : {}),
43
+ ...(validated.kind !== undefined ? { type: validated.kind === "instant" ? 1 : 2 } : {}),
44
+ ...(validated.startTime !== undefined ? { start_time: validated.startTime } : {}),
45
+ ...(validated.durationMinutes !== undefined ? { duration: validated.durationMinutes } : {}),
46
+ ...(validated.timezone !== undefined ? { timezone: validated.timezone } : {}),
47
+ ...(validated.agenda !== undefined ? { agenda: validated.agenda } : {}),
48
+ };
80
49
  return body;
81
50
  };
82
51
  export class ZoomRemoteMeetings {
@@ -115,23 +84,26 @@ export class ZoomRemoteMeetings {
115
84
  }
116
85
  async mutate(action, request, scope, options) {
117
86
  const result = { action, applied: false, request };
118
- if (!options.apply || options.dryRun)
119
- return result;
120
- const init = {
121
- method: request.method,
122
- ...(request.body ? { body: request.body } : {}),
123
- ...(options.signal ? { signal: options.signal } : {}),
124
- };
125
- const body = await this.remote.request(request.path, scope, init);
126
- result.applied = true;
127
- if (action === "create") {
128
- try {
129
- result.meeting = normalized(body);
130
- }
131
- catch {
132
- throw new ZoomError("outcome_unknown", "Zoom mutation returned incomplete meeting details; verify remote state before retrying");
87
+ const outcome = await dispatchMeetingMutation(options, async (signal) => {
88
+ const init = {
89
+ method: request.method,
90
+ ...(request.body ? { body: request.body } : {}),
91
+ ...(signal ? { signal } : {}),
92
+ };
93
+ const body = await this.remote.request(request.path, scope, init);
94
+ if (action === "create") {
95
+ try {
96
+ return normalized(body);
97
+ }
98
+ catch {
99
+ throw new ZoomError("outcome_unknown", "Zoom mutation returned incomplete meeting details; verify remote state before retrying");
100
+ }
133
101
  }
134
- }
102
+ return undefined;
103
+ });
104
+ result.applied = outcome.applied;
105
+ if (outcome.value)
106
+ result.meeting = outcome.value;
135
107
  return result;
136
108
  }
137
109
  create(change, options = {}) {
@@ -148,4 +120,40 @@ export class ZoomRemoteMeetings {
148
120
  return this.mutate("cancel", { method: "DELETE", path: `${path}${query}` }, "meeting:delete:meeting", options);
149
121
  }
150
122
  }
123
+ const managedMeeting = (meeting) => ({
124
+ id: meeting.id,
125
+ title: meeting.title,
126
+ kind: meeting.type === 1 ? "instant" : meeting.type === 2 ? "scheduled" : null,
127
+ startTime: meeting.startedAt,
128
+ durationMinutes: meeting.durationMinutes,
129
+ timezone: meeting.timezone,
130
+ agenda: meeting.agenda,
131
+ joinUrl: meeting.joinUrl,
132
+ });
133
+ const zoomChange = (change) => ({
134
+ ...(change.title !== undefined ? { topic: change.title } : {}),
135
+ ...(change.kind !== undefined ? { type: change.kind === "instant" ? 1 : 2 } : {}),
136
+ ...(change.startTime !== undefined ? { startTime: change.startTime } : {}),
137
+ ...(change.durationMinutes !== undefined ? { durationMinutes: change.durationMinutes } : {}),
138
+ ...(change.timezone !== undefined ? { timezone: change.timezone } : {}),
139
+ ...(change.agenda !== undefined ? { agenda: change.agenda } : {}),
140
+ });
141
+ /** The remote client must already be bound to the selected account's token manager. */
142
+ export const createZoomMeetingManagement = (remote, account) => createMeetingManagement({ provider: "zoom", account }, {
143
+ list: async ({ signal }) => (await remote.list({ signal })).map(managedMeeting),
144
+ get: async (id, { signal }) => managedMeeting(await remote.show(id, { signal })),
145
+ invitation: (id, { signal }) => remote.invitation(id, { signal }),
146
+ create: async (change, { signal }) => {
147
+ const receipt = await remote.create(zoomChange(change), { apply: true, signal });
148
+ if (!receipt.meeting)
149
+ throw new ZoomError("outcome_unknown", "Zoom did not acknowledge the created meeting");
150
+ return managedMeeting(receipt.meeting);
151
+ },
152
+ update: async (id, change, { signal }) => {
153
+ await remote.update(id, zoomChange(change), { apply: true, signal });
154
+ },
155
+ cancel: async (id, { signal, occurrenceId }) => {
156
+ await remote.cancel(id, { apply: true, signal, occurrenceId });
157
+ },
158
+ });
151
159
  //# sourceMappingURL=remote-meetings.js.map