@kamilio/wire 0.1.2 → 0.1.3

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 (101) hide show
  1. package/README.md +1 -1
  2. package/bin/wire-mcp.mjs +1 -1
  3. package/dist/adapters/root.d.ts +5 -2
  4. package/dist/adapters/root.d.ts.map +1 -1
  5. package/dist/adapters/root.js +58 -30
  6. package/dist/adapters/root.js.map +1 -1
  7. package/dist/auth.d.ts.map +1 -1
  8. package/dist/auth.js +6 -26
  9. package/dist/auth.js.map +1 -1
  10. package/dist/cli.js +2 -2
  11. package/dist/cli.js.map +1 -1
  12. package/dist/executable.d.ts +3 -1
  13. package/dist/executable.d.ts.map +1 -1
  14. package/dist/executable.js +5 -4
  15. package/dist/executable.js.map +1 -1
  16. package/dist/hooks.d.ts.map +1 -1
  17. package/dist/hooks.js +4 -0
  18. package/dist/hooks.js.map +1 -1
  19. package/node_modules/provider-asana/dist/asana-project.d.ts.map +1 -1
  20. package/node_modules/provider-asana/dist/asana-project.js +3 -0
  21. package/node_modules/provider-asana/dist/asana-project.js.map +1 -1
  22. package/node_modules/provider-asana/src/asana-project.ts +2 -0
  23. package/node_modules/provider-chatgpt/dist/chatgpt.d.ts.map +1 -1
  24. package/node_modules/provider-chatgpt/dist/chatgpt.js +2 -0
  25. package/node_modules/provider-chatgpt/dist/chatgpt.js.map +1 -1
  26. package/node_modules/provider-chatgpt/src/chatgpt.ts +1 -0
  27. package/node_modules/provider-gmail/dist/gmail.d.ts.map +1 -1
  28. package/node_modules/provider-gmail/dist/gmail.js +6 -2
  29. package/node_modules/provider-gmail/dist/gmail.js.map +1 -1
  30. package/node_modules/provider-gmail/src/gmail.ts +7 -2
  31. package/node_modules/provider-google-docs/dist/google-docs.d.ts.map +1 -1
  32. package/node_modules/provider-google-docs/dist/google-docs.js +370 -9
  33. package/node_modules/provider-google-docs/dist/google-docs.js.map +1 -1
  34. package/node_modules/provider-google-docs/dist/google-forms.d.ts +28 -0
  35. package/node_modules/provider-google-docs/dist/google-forms.d.ts.map +1 -0
  36. package/node_modules/provider-google-docs/dist/google-forms.js +191 -0
  37. package/node_modules/provider-google-docs/dist/google-forms.js.map +1 -0
  38. package/node_modules/provider-google-docs/dist/index.d.ts +26 -0
  39. package/node_modules/provider-google-docs/dist/index.d.ts.map +1 -1
  40. package/node_modules/provider-google-docs/dist/index.js +3 -1
  41. package/node_modules/provider-google-docs/dist/index.js.map +1 -1
  42. package/node_modules/provider-google-docs/src/google-docs.ts +339 -10
  43. package/node_modules/provider-google-docs/src/google-forms.ts +179 -0
  44. package/node_modules/provider-google-docs/src/index.ts +3 -1
  45. package/node_modules/provider-notion/dist/notion-sync.d.ts +1 -1
  46. package/node_modules/provider-notion/dist/notion-sync.d.ts.map +1 -1
  47. package/node_modules/provider-notion/dist/notion-sync.js +51 -29
  48. package/node_modules/provider-notion/dist/notion-sync.js.map +1 -1
  49. package/node_modules/provider-notion/src/notion-sync.ts +52 -26
  50. package/node_modules/provider-slack/dist/slack.d.ts.map +1 -1
  51. package/node_modules/provider-slack/dist/slack.js +14 -7
  52. package/node_modules/provider-slack/dist/slack.js.map +1 -1
  53. package/node_modules/provider-slack/src/slack.ts +14 -5
  54. package/node_modules/provider-zoom/dist/zoom-hub.d.ts.map +1 -1
  55. package/node_modules/provider-zoom/dist/zoom-hub.js +42 -35
  56. package/node_modules/provider-zoom/dist/zoom-hub.js.map +1 -1
  57. package/node_modules/provider-zoom/src/zoom-hub.ts +40 -35
  58. package/node_modules/wire-core/dist/core/model.d.ts +1 -1
  59. package/node_modules/wire-core/dist/core/model.d.ts.map +1 -1
  60. package/node_modules/wire-core/dist/index.d.ts +3 -2
  61. package/node_modules/wire-core/dist/index.d.ts.map +1 -1
  62. package/node_modules/wire-core/dist/index.js +2 -2
  63. package/node_modules/wire-core/dist/index.js.map +1 -1
  64. package/node_modules/wire-core/dist/operations.d.ts +3 -0
  65. package/node_modules/wire-core/dist/operations.d.ts.map +1 -1
  66. package/node_modules/wire-core/dist/operations.js +46 -7
  67. package/node_modules/wire-core/dist/operations.js.map +1 -1
  68. package/node_modules/wire-core/dist/ports.d.ts +1 -0
  69. package/node_modules/wire-core/dist/ports.d.ts.map +1 -1
  70. package/node_modules/wire-core/dist/runtime/chrome.d.ts.map +1 -1
  71. package/node_modules/wire-core/dist/runtime/chrome.js +27 -4
  72. package/node_modules/wire-core/dist/runtime/chrome.js.map +1 -1
  73. package/node_modules/wire-core/dist/runtime/cookies.d.ts.map +1 -1
  74. package/node_modules/wire-core/dist/runtime/cookies.js +7 -2
  75. package/node_modules/wire-core/dist/runtime/cookies.js.map +1 -1
  76. package/node_modules/wire-core/dist/runtime/node.d.ts.map +1 -1
  77. package/node_modules/wire-core/dist/runtime/node.js +4 -0
  78. package/node_modules/wire-core/dist/runtime/node.js.map +1 -1
  79. package/node_modules/wire-core/dist/storage/registry.d.ts.map +1 -1
  80. package/node_modules/wire-core/dist/storage/registry.js +95 -208
  81. package/node_modules/wire-core/dist/storage/registry.js.map +1 -1
  82. package/node_modules/wire-core/dist/storage/workspace.d.ts +3 -0
  83. package/node_modules/wire-core/dist/storage/workspace.d.ts.map +1 -1
  84. package/node_modules/wire-core/dist/storage/workspace.js +10 -1
  85. package/node_modules/wire-core/dist/storage/workspace.js.map +1 -1
  86. package/node_modules/wire-core/package.json +4 -0
  87. package/node_modules/wire-core/src/core/model.ts +1 -1
  88. package/node_modules/wire-core/src/index.ts +3 -2
  89. package/node_modules/wire-core/src/operations.ts +52 -8
  90. package/node_modules/wire-core/src/ports.ts +1 -0
  91. package/node_modules/wire-core/src/runtime/chrome.ts +30 -5
  92. package/node_modules/wire-core/src/runtime/cookies.ts +4 -2
  93. package/node_modules/wire-core/src/runtime/node.ts +4 -0
  94. package/node_modules/wire-core/src/storage/registry.ts +48 -15
  95. package/node_modules/wire-core/src/storage/workspace.ts +10 -1
  96. package/package.json +1 -1
  97. package/src/adapters/root.ts +51 -31
  98. package/src/auth.ts +7 -20
  99. package/src/cli.ts +2 -2
  100. package/src/executable.ts +5 -4
  101. package/src/hooks.ts +5 -0
@@ -33,7 +33,7 @@ function inlineCode(value: string): string {
33
33
  }
34
34
 
35
35
  function escapeInlineMarkdown(value: string): string {
36
- return value.replace(/\\/g, "\\\\").replace(/\*/g, "\\*").replace(/~/g, "\\~").replace(/\[/g, "\\[").replace(/\]/g, "\\]");
36
+ return value.replace(/\\/g, "\\\\").replace(/\*/g, "\\*").replace(/~/g, "\\~").replace(/`/g, "\\`").replace(/\[/g, "\\[").replace(/\]/g, "\\]");
37
37
  }
38
38
 
39
39
  function unescapeInlineMarkdown(value: string): string {
@@ -273,6 +273,10 @@ function markdownBlockStart(stripped: string): boolean {
273
273
  return /^(#{1,6})\s+|^[-*]\s+|^\d+\.\s+|^-\s+\[[ xX]\]\s+|^```|^---$|^!\[|^>|^\||^:::/.test(stripped);
274
274
  }
275
275
 
276
+ function escapeBlockMarkdownLine(line: string): string {
277
+ return markdownBlockStart(line) ? `\\${line}` : line;
278
+ }
279
+
276
280
  function colonFenceBody(lines: readonly string[], index: number): Readonly<{ body: readonly string[]; index: number }> {
277
281
  const body: string[] = [];
278
282
  let depth = 0;
@@ -364,8 +368,13 @@ function parseLines(lines: readonly string[], baseIndent = 0): NotionBlock[] {
364
368
  continue;
365
369
  }
366
370
  if (stripped.startsWith("> ")) {
367
- blocks.push({ type: "quote", content: stripped.slice(2), properties: {}, rich_text: parseInline(stripped.slice(2)), indent });
371
+ const content = [stripped.slice(2)];
368
372
  index += 1;
373
+ while (index < lines.length && lines[index]!.trim() !== "" && baseIndent + lineIndent(lines[index]!) === indent && stripIndent(lines[index]!).startsWith("> ")) {
374
+ content.push(stripIndent(lines[index]!).slice(2));
375
+ index += 1;
376
+ }
377
+ blocks.push({ type: "quote", content: content.join("\n"), properties: {}, rich_text: parseInline(content.join("\n")), indent });
369
378
  continue;
370
379
  }
371
380
  if (stripped.startsWith("|")) {
@@ -480,7 +489,14 @@ export function parseNotionMarkdown(markdown: string): readonly NotionBlock[] {
480
489
  return parseLines(markdown.replace(/^\ufeff/, "").split("\n"));
481
490
  }
482
491
 
483
- function parserBlockToNotionBlock(block: NotionBlock, id: string, parentId: string, parentTable: string, spaceId: string, userId: string, currentTime: number): JsonObject {
492
+ function tableRowCells(block: NotionBlock, columnOrder?: readonly string[]): JsonObject {
493
+ const cells = object(block.properties["cells"]!);
494
+ if (columnOrder === undefined) return cells;
495
+ const localColumns = Object.keys(cells);
496
+ return Object.fromEntries(columnOrder.map((column, index) => [column, cells[localColumns[index]!]!]));
497
+ }
498
+
499
+ function parserBlockToNotionBlock(block: NotionBlock, id: string, parentId: string, parentTable: string, spaceId: string, userId: string, currentTime: number, columnOrder?: readonly string[]): JsonObject {
484
500
  const base: Record<string, JsonValue> = { id, type: block.type, space_id: spaceId, parent_id: parentId, parent_table: parentTable, alive: true, created_time: currentTime, created_by_table: "notion_user", created_by_id: userId, last_edited_time: currentTime, last_edited_by_table: "notion_user", last_edited_by_id: userId };
485
501
  if (block.properties["notion_opaque"] !== undefined) return { ...object(block.properties["notion_opaque"]!), ...base };
486
502
  if (block.type === "divider") return base;
@@ -489,7 +505,7 @@ function parserBlockToNotionBlock(block: NotionBlock, id: string, parentId: stri
489
505
  if (block.type === "to_do") return { ...base, properties: { title: block.rich_text, checked: [[block.properties["checked"] === true ? "Yes" : "No"]] } };
490
506
  if (block.type === "image") return { ...base, properties: { source: [[block.properties["source"]!]], alt_text: [[block.properties["alt_text"]!]], ...(block.properties["caption"] === undefined ? {} : { caption: block.properties["caption"]! }) } };
491
507
  if (block.type === "table") return { ...base, properties: {}, format: { table_block_column_order: block.properties["column_ids"]!, table_block_column_header: block.properties["has_header"]!, table_block_row_header: block.properties["has_row_header"]! } };
492
- if (block.type === "table_row") return { ...base, properties: block.properties["cells"]! };
508
+ if (block.type === "table_row") return { ...base, properties: tableRowCells(block, columnOrder) };
493
509
  if (block.type === "column_list" || block.type === "transclusion_container") return { ...base, properties: {} };
494
510
  if (block.type === "column") return { ...base, properties: {}, ...(block.properties["format"] === undefined ? {} : { format: block.properties["format"]! }) };
495
511
  if (block.type === "callout") return { ...base, properties: { title: block.rich_text }, ...(block.properties["format"] === undefined ? {} : { format: block.properties["format"]! }) };
@@ -497,12 +513,13 @@ function parserBlockToNotionBlock(block: NotionBlock, id: string, parentId: stri
497
513
  return { ...base, properties: { title: block.rich_text } };
498
514
  }
499
515
 
500
- export function buildNotionCreateOperations(blocks: readonly NotionBlock[], pageId: string, spaceId: string, userId: string, currentTime: number, createId: () => string = () => randomUUID()): Readonly<{ operations: readonly NotionOperation[]; topLevelIds: readonly string[] }> {
516
+ export function buildNotionCreateOperations(blocks: readonly NotionBlock[], pageId: string, spaceId: string, userId: string, currentTime: number, createId: () => string = () => randomUUID(), initialTableColumnOrder?: readonly string[]): Readonly<{ operations: readonly NotionOperation[]; topLevelIds: readonly string[] }> {
501
517
  const operations: NotionOperation[] = [];
502
518
  const topLevelIds: string[] = [];
503
519
  const lastAtIndent = new Map<number, string>();
504
520
  const lastChildByParent = new Map<string, string>();
505
521
  let lastTableId: string | null = null;
522
+ let tableColumnOrder: readonly string[] | undefined = initialTableColumnOrder;
506
523
  for (const block of blocks) {
507
524
  const blockId = formatBlockId(createId().replaceAll("-", ""));
508
525
  let parentId = pageId;
@@ -514,12 +531,15 @@ export function buildNotionCreateOperations(blocks: readonly NotionBlock[], page
514
531
  }
515
532
  if (block.type !== "table_row" && block.indent === 0) topLevelIds.push(blockId);
516
533
  const parentTable = "block";
517
- operations.push({ pointer: pointer(blockId, spaceId), path: [], command: "set", args: parserBlockToNotionBlock(block, blockId, parentId, parentTable, spaceId, userId, currentTime) });
534
+ operations.push({ pointer: pointer(blockId, spaceId), path: [], command: "set", args: parserBlockToNotionBlock(block, blockId, parentId, parentTable, spaceId, userId, currentTime, block.type === "table_row" ? tableColumnOrder : undefined) });
518
535
  const after = lastChildByParent.get(parentId);
519
536
  operations.push({ pointer: pointer(parentId, spaceId), path: ["content"], command: after === undefined ? "listBefore" : "listAfter", args: after === undefined ? { id: blockId } : { id: blockId, after } });
520
537
  lastChildByParent.set(parentId, blockId);
521
538
  if (["bulleted_list", "numbered_list", "to_do", "quote", "callout", "toggle", "header", "sub_header", "sub_sub_header", "table", "page", "column_list", "column", "transclusion_container"].includes(block.type)) lastAtIndent.set(block.indent, blockId);
522
- if (block.type === "table") lastTableId = blockId;
539
+ if (block.type === "table") {
540
+ lastTableId = blockId;
541
+ tableColumnOrder = block.properties["column_ids"] as readonly string[];
542
+ }
523
543
  }
524
544
  if (operations.length > 0) operations.push({ pointer: pointer(pageId, spaceId), path: ["last_edited_time"], command: "set", args: currentTime });
525
545
  return { operations, topLevelIds };
@@ -546,7 +566,10 @@ function canonicalParserBlock(block: NotionBlock, columnOrder?: readonly string[
546
566
  if (block.type === "code") return { type: "code", title: normalizeRichText([[block.content]]), language: [[block.properties["language"]!]] };
547
567
  if (block.type === "to_do") return { type: "to_do", title: normalizeRichText(block.rich_text), checked: [[block.properties["checked"] === true ? "Yes" : "No"]] };
548
568
  if (block.type === "table") return { type: "table", column_count: (block.properties["column_ids"] as JsonValue[]).length };
549
- if (block.type === "table_row") return { type: "table_row", cells: columnOrder!.map((column) => normalizeRichText(object(block.properties["cells"]!)[column]!)) };
569
+ if (block.type === "table_row") {
570
+ const cells = tableRowCells(block, columnOrder);
571
+ return { type: "table_row", cells: columnOrder!.map((column) => normalizeRichText(cells[column]!)) };
572
+ }
550
573
  if (block.type === "image") return { type: "image", source: [[block.properties["source"]!]], alt_text: [[block.properties["alt_text"]!]], caption: block.properties["caption"] ?? null };
551
574
  if (block.type === "column") return { type: "column", column_ratio: object(block.properties["format"] ?? {})["column_ratio"] ?? null };
552
575
  if (block.type === "column_list" || block.type === "transclusion_container") return { type: block.type };
@@ -583,18 +606,20 @@ function localTree(blocks: readonly NotionBlock[]): LocalNotionNode[] {
583
606
  return roots;
584
607
  }
585
608
 
586
- function outputNode(node: LocalNotionNode, remoteNode: NotionTree | undefined, parentId: string, remote: Readonly<{ spaceId: string; userId: string }>, currentTime: number): NotionTree {
609
+ function outputNode(node: LocalNotionNode, remoteNode: NotionTree | undefined, parentId: string, remote: Readonly<{ spaceId: string; userId: string }>, currentTime: number, columnOrder?: readonly string[]): NotionTree {
587
610
  const id = remoteNode?.id ?? formatBlockId(randomUUID().replaceAll("-", ""));
588
- return { id, block: parserBlockToNotionBlock(node.block, id, parentId, "block", remote.spaceId, remote.userId, currentTime), children: node.children.map((child, index) => outputNode(child, remoteNode?.children[index], id, remote, currentTime)) };
611
+ const block = parserBlockToNotionBlock(node.block, id, parentId, "block", remote.spaceId, remote.userId, currentTime, node.block.type === "table_row" ? columnOrder : undefined);
612
+ const nextColumnOrder = block["type"] === "table" ? object(block["format"]!)["table_block_column_order"] as readonly string[] : columnOrder;
613
+ return { id, block, children: node.children.map((child, index) => outputNode(child, remoteNode?.children[index], id, remote, currentTime, nextColumnOrder)) };
589
614
  }
590
615
 
591
- function emitUpdates(remote: JsonObject, local: NotionBlock, blockId: string, spaceId: string): NotionOperation[] {
616
+ function emitUpdates(remote: JsonObject, local: NotionBlock, blockId: string, spaceId: string, columnOrder?: readonly string[]): NotionOperation[] {
592
617
  const operations: NotionOperation[] = [];
593
618
  const remoteType = remote["type"] === "text" && object(remote["format"] ?? {})["toggleable"] === true ? "toggle" : remote["type"] as string;
594
619
  const localType = local.type === "toggle" ? "text" : local.type;
595
620
  const typeChanged = remoteType !== local.type;
596
621
  if (typeChanged) operations.push({ pointer: pointer(blockId, spaceId), path: ["type"], command: "set", args: localType });
597
- const args = parserBlockToNotionBlock(local, blockId, remote["parent_id"] as string ?? "", "block", spaceId, "", 0);
622
+ const args = parserBlockToNotionBlock(local, blockId, remote["parent_id"] as string ?? "", "block", spaceId, "", 0, local.type === "table_row" ? columnOrder : undefined);
598
623
  const remoteProperties = object(remote["properties"] ?? {});
599
624
  const nextProperties = object(args["properties"] ?? {});
600
625
  if (typeChanged) {
@@ -617,8 +642,8 @@ function flattenLocalSubtree(node: LocalNotionNode): readonly NotionBlock[] {
617
642
  return blocks;
618
643
  }
619
644
 
620
- function buildNotionCreateSubtreeOperations(node: LocalNotionNode, parentId: string, ambient: Readonly<{ spaceId: string; userId: string; currentTime: number }>): Readonly<{ operations: readonly NotionOperation[]; topLevelIds: readonly string[] }> {
621
- return buildNotionCreateOperations(flattenLocalSubtree(node), parentId, ambient.spaceId, ambient.userId, ambient.currentTime);
645
+ function buildNotionCreateSubtreeOperations(node: LocalNotionNode, parentId: string, ambient: Readonly<{ spaceId: string; userId: string; currentTime: number }>, columnOrder?: readonly string[]): Readonly<{ operations: readonly NotionOperation[]; topLevelIds: readonly string[] }> {
646
+ return buildNotionCreateOperations(flattenLocalSubtree(node), parentId, ambient.spaceId, ambient.userId, ambient.currentTime, undefined, columnOrder);
622
647
  }
623
648
 
624
649
  function positionRootCreateOperations(operations: readonly NotionOperation[], parentId: string, spaceId: string, previousId: string | undefined): readonly NotionOperation[] {
@@ -674,7 +699,7 @@ function diffNotionChildLists(remoteParent: NotionTree, localChildren: readonly
674
699
  continue;
675
700
  }
676
701
  if (localIndex + 1 < localChildren.length && remoteHash(remoteIndex) === localHash(localIndex + 1)) {
677
- const built = buildNotionCreateSubtreeOperations(localNode, remoteParent.id, ambient);
702
+ const built = buildNotionCreateSubtreeOperations(localNode, remoteParent.id, ambient, nextColumnOrder);
678
703
  operations.push(...positionRootCreateOperations(built.operations, remoteParent.id, ambient.spaceId, previousId));
679
704
  summary.inserted += localSubtreeSize(localNode);
680
705
  previousId = built.topLevelIds[0]!;
@@ -688,7 +713,7 @@ function diffNotionChildLists(remoteParent: NotionTree, localChildren: readonly
688
713
  continue;
689
714
  }
690
715
  const before = operations.length;
691
- operations.push(...emitUpdates(remoteNode.block, localNode.block, remoteNode.id, ambient.spaceId));
716
+ operations.push(...emitUpdates(remoteNode.block, localNode.block, remoteNode.id, ambient.spaceId, nextColumnOrder));
692
717
  operations.push(...diffNotionChildLists(remoteNode, localNode.children, ambient, summary, nextColumnOrder));
693
718
  if (operations.length > before) summary.updated += 1;
694
719
  previousId = remoteNode.id;
@@ -697,7 +722,7 @@ function diffNotionChildLists(remoteParent: NotionTree, localChildren: readonly
697
722
  }
698
723
  while (localIndex < localChildren.length) {
699
724
  const localNode = localChildren[localIndex]!;
700
- const built = buildNotionCreateSubtreeOperations(localNode, remoteParent.id, ambient);
725
+ const built = buildNotionCreateSubtreeOperations(localNode, remoteParent.id, ambient, nextColumnOrder);
701
726
  operations.push(...positionRootCreateOperations(built.operations, remoteParent.id, ambient.spaceId, previousId ?? remoteChildren[remoteChildren.length - 1]?.id));
702
727
  summary.inserted += localSubtreeSize(localNode);
703
728
  previousId = built.topLevelIds[0]!;
@@ -732,19 +757,19 @@ function renderNode(tree: NotionTree, indent: number, parentType = ""): string[]
732
757
  }
733
758
  if (type === "bulleted_list") {
734
759
  const lines = title.split("\n");
735
- return [`${prefix}- ${lines[0]}`, ...lines.slice(1).map((line) => `${prefix} ${line}`), ...tree.children.flatMap((child) => renderNode(child, indent + 1, type))];
760
+ return [`${prefix}- ${lines[0]}`, ...lines.slice(1).map((line) => `${prefix} ${escapeBlockMarkdownLine(line)}`), ...tree.children.flatMap((child) => renderNode(child, indent + 1, type))];
736
761
  }
737
762
  if (type === "numbered_list") {
738
763
  const lines = title.split("\n");
739
- return [`${prefix}1. ${lines[0]}`, ...lines.slice(1).map((line) => `${prefix} ${line}`), ...tree.children.flatMap((child) => renderNode(child, indent + 1, type))];
764
+ return [`${prefix}1. ${lines[0]}`, ...lines.slice(1).map((line) => `${prefix} ${escapeBlockMarkdownLine(line)}`), ...tree.children.flatMap((child) => renderNode(child, indent + 1, type))];
740
765
  }
741
766
  if (type === "to_do") {
742
767
  const checked = richTextText(properties["checked"] ?? [["No"]]) === "Yes";
743
768
  if (title === "") return [`${prefix}:::to-do`, `${prefix}:::checked ${JSON.stringify(checked)}`, prefix, ...tree.children.flatMap((child) => renderNode(child, indent + 1, type)), `${prefix}:::`];
744
769
  const lines = title.split("\n");
745
- return [`${prefix}- [${checked ? "x" : " "}] ${lines[0]}`, ...lines.slice(1).map((line) => `${prefix} ${line}`), ...tree.children.flatMap((child) => renderNode(child, indent + 1, type))];
770
+ return [`${prefix}- [${checked ? "x" : " "}] ${lines[0]}`, ...lines.slice(1).map((line) => `${prefix} ${escapeBlockMarkdownLine(line)}`), ...tree.children.flatMap((child) => renderNode(child, indent + 1, type))];
746
771
  }
747
- if (type === "quote") return [`${prefix}> ${title}`, ...tree.children.flatMap((child) => renderNode(child, indent + 1, type))];
772
+ if (type === "quote") return [...title.split("\n").map((line) => `${prefix}> ${escapeBlockMarkdownLine(line)}`), ...tree.children.flatMap((child) => renderNode(child, indent + 1, type))];
748
773
  if (type === "divider") return [`${prefix}---`];
749
774
  if (type === "code") {
750
775
  const code = richTextText(properties["title"]!);
@@ -772,7 +797,7 @@ function renderNode(tree: NotionTree, indent: number, parentType = ""): string[]
772
797
  }
773
798
  if (title === "") return [`${prefix}:::text`, `${prefix}:::`];
774
799
  if (["bulleted_list", "numbered_list", "to_do"].includes(parentType)) return [`${prefix}:::text`, ...title.split("\n").map((line) => `${prefix}${line}`), `${prefix}:::`];
775
- return [`${prefix}${title}`];
800
+ return title.split("\n").map((line) => `${prefix}${escapeBlockMarkdownLine(line)}`);
776
801
  }
777
802
 
778
803
  export function renderNotionTreeToMarkdown(tree: NotionTree, mentions?: UserMentions): string {
@@ -801,9 +826,9 @@ async function fetchTree(runtime: RuntimeCapabilities, url: string, source: Sour
801
826
  await runtime.http.request(url, { headers: { cookie } });
802
827
  const spaces = await notionPost(runtime, "getSpaces", cookie, {}, {});
803
828
  const spaceView = object(object(spaces[userId]!)["space_view"]!);
804
- const spaceId = object(spaceView[Object.keys(spaceView)[0]!]!)["spaceId"] as string;
829
+ const initialSpaceId = object(spaceView[Object.keys(spaceView)[0]!]!)["spaceId"] as string;
805
830
  const pageId = formatBlockId(source.identifier);
806
- const headers = { "x-notion-active-user-header": userId, "x-notion-space-id": spaceId, referer: url, ...(csrf === undefined ? {} : { "x-csrf-token": csrf }) };
831
+ let headers = { "x-notion-active-user-header": userId, "x-notion-space-id": initialSpaceId, referer: url, ...(csrf === undefined ? {} : { "x-csrf-token": csrf }) };
807
832
  const blocks = new Map<string, JsonObject>();
808
833
  let stack: JsonValue[] = [];
809
834
  let chunkNumber = 0;
@@ -814,6 +839,8 @@ async function fetchTree(runtime: RuntimeCapabilities, url: string, source: Sour
814
839
  stack = cursors.length === 0 ? [] : cursors[0]!["stack"] as JsonValue[];
815
840
  chunkNumber += 1;
816
841
  } while (stack.length > 0);
842
+ const spaceId = blocks.get(pageId)!["space_id"] as string;
843
+ headers = { ...headers, "x-notion-space-id": spaceId };
817
844
  while (true) {
818
845
  const missing = new Set<string>();
819
846
  const pending = [pageId];
@@ -862,6 +889,7 @@ export async function uploadNotionDocument(runtime: RuntimeCapabilities, markdow
862
889
  const csrf = cookies.find((value) => value.name === "csrf")?.value;
863
890
  const spaces = await notionPost(runtime, "getSpaces", cookie, {}, {});
864
891
  const spaceView = object(object(spaces[userId]!)["space_view"]!);
892
+ if (Object.keys(spaceView).length !== 1) throw new Error("Notion upload requires an explicit target workspace.");
865
893
  const spaceId = object(spaceView[Object.keys(spaceView)[0]!]!)["spaceId"] as string;
866
894
  const pageId = randomUUID();
867
895
  const compactPageId = pageId.replaceAll("-", "");
@@ -924,8 +952,6 @@ export async function synchronizeNotionDocument(runtime: RuntimeCapabilities, ur
924
952
  const remoteTitleChanged = baseSplit.title !== currentSplit.title;
925
953
  const localBodyChanged = baseSplit.body !== split.body;
926
954
  const remoteBodyChanged = baseSplit.body !== currentSplit.body;
927
- if (localTitleChanged && remoteTitleChanged && split.title !== currentSplit.title) throw new Error("Markdown and Notion changed since last sync");
928
- if (localBodyChanged && remoteBodyChanged && split.body !== currentSplit.body) throw new Error("Markdown and Notion changed since last sync");
929
955
  if ((localTitleChanged || localBodyChanged) && (remoteTitleChanged || remoteBodyChanged)) {
930
956
  split = { title: localTitleChanged ? split.title : currentSplit.title, body: localBodyChanged ? split.body : currentSplit.body };
931
957
  fieldMerged = true;
@@ -1 +1 @@
1
- {"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAgDrD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;EAyDvB,CAAC"}
1
+ {"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAgDrD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;EAkEvB,CAAC"}
@@ -60,7 +60,13 @@ export const slackService = defineService({
60
60
  const metadata = await runtime.cookies.metadata("slack");
61
61
  const origin = new URL(url).hostname === "app.slack.com" ? metadata["origin"] : new URL(url).origin;
62
62
  const token = metadata["token"];
63
- const response = await api(runtime, origin, token, cookie, "conversations.replies", { channel: source["channel_id"], ts: source["thread_timestamp"], limit: "999" });
63
+ const replies = [];
64
+ let cursor;
65
+ do {
66
+ const response = await api(runtime, origin, token, cookie, "conversations.replies", { channel: source["channel_id"], ts: source["thread_timestamp"], limit: "999", ...(cursor === undefined ? {} : { cursor }) });
67
+ replies.push(...response["messages"]);
68
+ cursor = response["response_metadata"]?.["next_cursor"];
69
+ } while (cursor !== undefined && cursor !== "");
64
70
  const userCache = new Map();
65
71
  const botCache = new Map();
66
72
  const resolveUser = async (id) => {
@@ -75,7 +81,7 @@ export const slackService = defineService({
75
81
  return userCache.get(id);
76
82
  };
77
83
  const messages = [];
78
- for (const raw of response["messages"]) {
84
+ for (const raw of replies) {
79
85
  const userId = raw["user"];
80
86
  let userName;
81
87
  if (userId !== undefined)
@@ -92,17 +98,18 @@ export const slackService = defineService({
92
98
  }
93
99
  else
94
100
  userName = "unknown";
95
- let text = raw["text"];
101
+ const text = raw["text"];
96
102
  const files = raw["files"] === undefined ? [] : raw["files"].map((file) => Object.freeze({ name: file["name"], url: file["url_private"] }));
97
- if (text.trim() === "" && files.length > 0)
98
- text = files.map((file) => `- [${markdownLinkLabel(file.name)}](${file.url})`).join("\n");
99
103
  messages.push({ ts: raw["ts"], user_id: userId ?? "unknown", user_name: userName, text, files });
100
104
  }
101
105
  const mentioned = new Set(messages.flatMap((message) => [...message.text.matchAll(/<@([A-Z0-9]+)(?:\|[^>]+)?>/g)].map((match) => match[1])));
102
106
  for (const id of mentioned)
103
107
  await resolveUser(id);
104
- for (const message of messages)
105
- message.text = cleanText(message.text.replace(/<@([A-Z0-9]+)(?:\|[^>]+)?>/g, (_match, id) => `@${userCache.get(id)}`)).replace(/```([^\n])/g, "```\n$1").replace(/([^\n])```/g, "$1\n```");
108
+ for (const message of messages) {
109
+ const cleaned = cleanText(message.text.replace(/<@([A-Z0-9]+)(?:\|[^>]+)?>/g, (_match, id) => `@${userCache.get(id)}`)).replace(/```([^\n])/g, "```\n$1").replace(/([^\n])```/g, "$1\n```");
110
+ const fileLines = message.files.map((file) => `- [${markdownLinkLabel(file.name)}](${file.url})`).join("\n");
111
+ message.text = cleaned.trim() === "" ? fileLines : fileLines === "" ? cleaned : `${cleaned}\n\n${fileLines}`;
112
+ }
106
113
  const timezone = runtime.clock.localTimezone();
107
114
  const date = formatTimestamp(messages[0].ts, timezone).slice(0, 10);
108
115
  const titleText = messages[0].text.replace(/https?:\/\/\S+/g, "").slice(0, 30).replace(/[^\p{L}\p{N}_\s-]/gu, "").replace(/[\s-]+/g, "_").replace(/^_+|_+$/g, "");
@@ -1 +1 @@
1
- {"version":3,"file":"slack.js","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slack.js","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"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"}
@@ -64,7 +64,13 @@ export const slackService = defineService<RuntimeCapabilities>({
64
64
  const metadata = await runtime.cookies.metadata("slack");
65
65
  const origin = new URL(url).hostname === "app.slack.com" ? metadata["origin"]! : new URL(url).origin;
66
66
  const token = metadata["token"]!;
67
- const response = await api(runtime, origin, token, cookie, "conversations.replies", { channel: source["channel_id"] as string, ts: source["thread_timestamp"] as string, limit: "999" });
67
+ const replies: JsonObject[] = [];
68
+ let cursor: string | undefined;
69
+ do {
70
+ const response = await api(runtime, origin, token, cookie, "conversations.replies", { channel: source["channel_id"] as string, ts: source["thread_timestamp"] as string, limit: "999", ...(cursor === undefined ? {} : { cursor }) });
71
+ replies.push(...response["messages"] as readonly JsonObject[]);
72
+ cursor = ((response["response_metadata"] as JsonObject | undefined)?.["next_cursor"] as string | undefined);
73
+ } while (cursor !== undefined && cursor !== "");
68
74
  const userCache = new Map<string, string>();
69
75
  const botCache = new Map<string, string>();
70
76
  const resolveUser = async (id: string) => {
@@ -79,7 +85,7 @@ export const slackService = defineService<RuntimeCapabilities>({
79
85
  return userCache.get(id)!;
80
86
  };
81
87
  const messages = [];
82
- for (const raw of response["messages"] as readonly JsonObject[]) {
88
+ for (const raw of replies) {
83
89
  const userId = raw["user"] as string | undefined;
84
90
  let userName: string;
85
91
  if (userId !== undefined) userName = await resolveUser(userId);
@@ -90,14 +96,17 @@ export const slackService = defineService<RuntimeCapabilities>({
90
96
  if (!botCache.has(botId)) botCache.set(botId, ((await api(runtime, origin, token, cookie, "bots.info", { bot: botId }))["bot"] as JsonObject)["name"] as string);
91
97
  userName = botCache.get(botId)!;
92
98
  } else userName = "unknown";
93
- let text = raw["text"] as string;
99
+ const text = raw["text"] as string;
94
100
  const files = raw["files"] === undefined ? [] : (raw["files"] as readonly JsonObject[]).map((file) => Object.freeze({ name: file["name"] as string, url: file["url_private"] as string }));
95
- if (text.trim() === "" && files.length > 0) text = files.map((file) => `- [${markdownLinkLabel(file.name)}](${file.url})`).join("\n");
96
101
  messages.push({ ts: raw["ts"] as string, user_id: userId ?? "unknown", user_name: userName, text, files });
97
102
  }
98
103
  const mentioned = new Set(messages.flatMap((message) => [...message.text.matchAll(/<@([A-Z0-9]+)(?:\|[^>]+)?>/g)].map((match) => match[1]!)));
99
104
  for (const id of mentioned) await resolveUser(id);
100
- for (const message of messages) message.text = cleanText(message.text.replace(/<@([A-Z0-9]+)(?:\|[^>]+)?>/g, (_match, id: string) => `@${userCache.get(id)!}`)).replace(/```([^\n])/g, "```\n$1").replace(/([^\n])```/g, "$1\n```");
105
+ for (const message of messages) {
106
+ const cleaned = cleanText(message.text.replace(/<@([A-Z0-9]+)(?:\|[^>]+)?>/g, (_match, id: string) => `@${userCache.get(id)!}`)).replace(/```([^\n])/g, "```\n$1").replace(/([^\n])```/g, "$1\n```");
107
+ const fileLines = message.files.map((file) => `- [${markdownLinkLabel(file.name)}](${file.url})`).join("\n");
108
+ message.text = cleaned.trim() === "" ? fileLines : fileLines === "" ? cleaned : `${cleaned}\n\n${fileLines}`;
109
+ }
101
110
  const timezone = runtime.clock.localTimezone();
102
111
  const date = formatTimestamp(messages[0]!.ts, timezone).slice(0, 10);
103
112
  const titleText = messages[0]!.text.replace(/https?:\/\/\S+/g, "").slice(0, 30).replace(/[^\p{L}\p{N}_\s-]/gu, "").replace(/[\s-]+/g, "_").replace(/^_+|_+$/g, "");
@@ -1 +1 @@
1
- {"version":3,"file":"zoom-hub.d.ts","sourceRoot":"","sources":["../src/zoom-hub.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AA2KrD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;EA2CzB,CAAC"}
1
+ {"version":3,"file":"zoom-hub.d.ts","sourceRoot":"","sources":["../src/zoom-hub.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAwJrD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;EAmEzB,CAAC"}
@@ -34,15 +34,6 @@ async function zoomJson(response, label) {
34
34
  throw new Error(`Zoom Hub ${label} failed: HTTP ${response.status} ${JSON.stringify(body)}`);
35
35
  return body;
36
36
  }
37
- function zoomCsrf(text) {
38
- const index = text.indexOf(":");
39
- if (index === -1)
40
- throw zoomAuthError();
41
- const token = text.slice(index + 1).trim();
42
- if (token === "")
43
- throw zoomAuthError();
44
- return token;
45
- }
46
37
  function zoomJwt(text) {
47
38
  const token = text.trim();
48
39
  if (token.split(".").length !== 3)
@@ -50,7 +41,7 @@ function zoomJwt(text) {
50
41
  return token;
51
42
  }
52
43
  function cookieKey(cookie) {
53
- return `${cookie.domain}\t${cookie.path}\t${cookie.name}`;
44
+ return `${cookie.domain.startsWith(".") ? cookie.domain.slice(1) : cookie.domain}\t${cookie.path}\t${cookie.name}`;
54
45
  }
55
46
  function cookieJar(cookies) {
56
47
  return new Map(cookies.map((cookie) => [cookieKey(cookie), cookie]));
@@ -148,16 +139,6 @@ function pruneExpiredCookies(jar, now) {
148
139
  }
149
140
  return changed;
150
141
  }
151
- async function saveZoomCookies(runtime, jar, metadata) {
152
- await runtime.cookies.save("zoom", Object.freeze([...jar.values()]), metadata);
153
- }
154
- async function zoomRequest(runtime, jar, metadata, url, init) {
155
- const parsed = new URL(url);
156
- const response = await runtime.http.request(url, { ...init, headers: { ...init.headers, cookie: requestCookies(jar, parsed, runtime.clock.now()) } });
157
- if (applyResponseCookies(jar, parsed, response, runtime.clock.now()))
158
- await saveZoomCookies(runtime, jar, metadata);
159
- return response;
160
- }
161
142
  export const zoomHubService = defineService({
162
143
  name: "zoom-hub",
163
144
  matches: (url) => url.hostname === "hub.zoom.us" && /^\/doc\/[^/]+\/?$/.test(url.pathname),
@@ -166,34 +147,60 @@ export const zoomHubService = defineService({
166
147
  const cookies = await runtime.cookies.loadSaved("zoom");
167
148
  if (cookies === null)
168
149
  throw zoomAuthError();
169
- const metadata = await runtime.cookies.metadata("zoom");
170
150
  const jar = cookieJar(cookies);
151
+ const state = { metadata: await runtime.cookies.metadata("zoom") };
152
+ const save = () => runtime.cookies.save("zoom", Object.freeze([...jar.values()]), state.metadata);
171
153
  if (pruneExpiredCookies(jar, runtime.clock.now()))
172
- await saveZoomCookies(runtime, jar, metadata);
154
+ await save();
173
155
  const accountCookie = [...jar.values()].find((value) => value.name === "zm_aid");
174
156
  if (accountCookie === undefined)
175
157
  throw zoomAuthError();
176
158
  const accountId = accountCookie.value;
177
- const csrfResponse = await zoomRequest(runtime, jar, metadata, "https://zoom.us/csrf_js", { method: "POST", headers: { "user-agent": userAgent, "fetch-csrf-token": "1", referer: "https://hub.zoom.us/" }, body: "" });
178
- const csrf = zoomCsrf(await zoomText(csrfResponse, "CSRF"));
179
- const jwtResponse = await zoomRequest(runtime, jar, metadata, "https://hub.zoom.us/nws/common/2.0/nak?pms=Hub%2CUser%3ABase%2CAICW&src=aicw", { headers: { "user-agent": userAgent, "zoom-csrftoken": csrf, "x-requested-with": "XMLHttpRequest", accept: "application/json, text/plain, */*", referer: "https://hub.zoom.us/" } });
180
- const jwt = zoomJwt(await zoomText(jwtResponse, "JWT"));
181
- const fileResponse = await zoomRequest(runtime, jar, metadata, "https://us01docs.zoom.us/api/file/files/action/batch_get", { method: "POST", headers: hubHeaders(jwt, "application/json"), body: JSON.stringify({ ids: [source.identifier], accountId }) });
159
+ const zoomRequest = async (url, init) => {
160
+ const parsed = new URL(url);
161
+ const response = await runtime.http.request(url, { ...init, headers: { ...init.headers, cookie: requestCookies(jar, parsed, runtime.clock.now()) } });
162
+ if (applyResponseCookies(jar, parsed, response, runtime.clock.now()))
163
+ await save();
164
+ return response;
165
+ };
166
+ const refreshJwt = async () => {
167
+ const jwtResponse = await zoomRequest("https://hub.zoom.us/nws/common/2.0/nak?pms=Hub%2CUser%3ABase%2CAICW&src=aicw", { headers: { "user-agent": userAgent, "x-requested-with": "XMLHttpRequest", accept: "application/json, text/plain, */*", referer: "https://hub.zoom.us/" } });
168
+ const jwt = zoomJwt(await zoomText(jwtResponse, "JWT"));
169
+ state.metadata = Object.freeze({ ...state.metadata, hub_jwt: jwt, hub_jwt_expires: String(runtime.clock.now().getTime() + 1_800_000) });
170
+ await save();
171
+ return jwt;
172
+ };
173
+ const cachedJwt = state.metadata["hub_jwt"];
174
+ const cachedExpires = state.metadata["hub_jwt_expires"];
175
+ let cached = cachedJwt !== undefined && cachedExpires !== undefined && runtime.clock.now().getTime() < Number(cachedExpires);
176
+ let jwt = cached ? cachedJwt : await refreshJwt();
177
+ const docsRequest = async (url, init) => {
178
+ const response = await zoomRequest(url, init(jwt));
179
+ if (response.status !== 401 || !cached)
180
+ return response;
181
+ cached = false;
182
+ jwt = await refreshJwt();
183
+ return zoomRequest(url, init(jwt));
184
+ };
185
+ const fileResponse = await docsRequest("https://us01docs.zoom.us/api/file/files/action/batch_get", (token) => ({ method: "POST", headers: hubHeaders(token, "application/json"), body: JSON.stringify({ ids: [source.identifier], accountId }) }));
182
186
  const files = (await zoomJson(fileResponse, "file batch_get"))["successItems"];
183
187
  if (files.length === 0)
184
188
  throw new Error(`Zoom Hub file ${source.identifier} was not returned by batch_get`);
185
189
  const document = files[0];
186
190
  const notes = document["meetingNotes"];
187
191
  const meetingId = notes["meetingId"];
188
- const statusResponse = await zoomRequest(runtime, jar, metadata, `https://us01docs.zoom.us/api/meeting/transcript_status?meetingId=${encodeURIComponent(meetingId)}`, { headers: hubHeaders(jwt) });
189
- const status = (await zoomJson(statusResponse, "transcript status"))["aicTranscript"];
190
- const base = { recording_id: source.identifier, title: document["title"], source_url: document["fileLink"], meeting_id: meetingId, main_meeting_id: notes["mainMeetingId"], owner: document["owner"]["ownerName"], created_at: document["createdInfo"]["time"], updated_at: document["updatedInfo"]["time"] };
191
- if (!status["exist"] || !status["canAccess"]) {
192
- const result = { ...base, transcript: "", state: status["exist"] ? "denied" : "missing" };
193
- const markdown = [`# ${result.title}`, "", `- Transcript state: ${result.state}`, `- Recording ID: ${result.recording_id}`, `- Meeting ID: ${result.meeting_id}`, `- Main meeting ID: ${result.main_meeting_id}`, `- Owner: ${result.owner}`, `- Zoom document: ${result.source_url}`].join("\n");
194
- return Object.freeze({ title: result.title, markdown, data: result });
192
+ const mainMeetingId = notes["mainMeetingId"];
193
+ const base = { recording_id: source.identifier, title: document["title"], source_url: document["fileLink"], meeting_id: meetingId, main_meeting_id: mainMeetingId, owner: document["owner"]["ownerName"], created_at: document["createdInfo"]["time"], updated_at: document["updatedInfo"]["time"] };
194
+ if (meetingId !== "") {
195
+ const statusResponse = await docsRequest(`https://us01docs.zoom.us/api/meeting/transcript_status?meetingId=${encodeURIComponent(meetingId)}`, (token) => ({ headers: hubHeaders(token) }));
196
+ const status = (await zoomJson(statusResponse, "transcript status"))["aicTranscript"];
197
+ if (!status["exist"] || !status["canAccess"]) {
198
+ const result = { ...base, transcript: "", state: status["exist"] ? "denied" : "missing" };
199
+ const markdown = [`# ${result.title}`, "", `- Transcript state: ${result.state}`, `- Recording ID: ${result.recording_id}`, `- Meeting ID: ${result.meeting_id}`, `- Main meeting ID: ${result.main_meeting_id}`, `- Owner: ${result.owner}`, `- Zoom document: ${result.source_url}`].join("\n");
200
+ return Object.freeze({ title: result.title, markdown, data: result });
201
+ }
195
202
  }
196
- const transcriptResponse = await zoomRequest(runtime, jar, metadata, `https://us01docs.zoom.us/api/bridge/meeting/transcripts/v2?meetingId=${encodeURIComponent(meetingId)}&fileId=${encodeURIComponent(source.identifier)}`, { headers: hubHeaders(jwt) });
203
+ const transcriptResponse = await docsRequest(`https://us01docs.zoom.us/api/bridge/meeting/transcripts/v2?meetingId=${encodeURIComponent(meetingId)}&fileId=${encodeURIComponent(source.identifier)}`, (token) => ({ headers: hubHeaders(token) }));
197
204
  const raw = await zoomJson(transcriptResponse, "transcript");
198
205
  const speakers = raw["speakers"];
199
206
  const speakerMap = new Map(speakers.map((speaker) => [speaker["userId"], speaker["username"]]));
@@ -1 +1 @@
1
- {"version":3,"file":"zoom-hub.js","sourceRoot":"","sources":["../src/zoom-hub.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zoom-hub.js","sourceRoot":"","sources":["../src/zoom-hub.ts"],"names":[],"mappings":"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"}